diff options
Diffstat (limited to 'registry')
-rw-r--r-- | registry/generator.py | 16 | ||||
-rwxr-xr-x | registry/genvk.py | 31 | ||||
-rw-r--r--[-rwxr-xr-x] | registry/reg.py | 71 | ||||
-rw-r--r-- | registry/validusage.json | 168 | ||||
-rw-r--r-- | registry/vk.xml | 684 |
5 files changed, 865 insertions, 105 deletions
diff --git a/registry/generator.py b/registry/generator.py index c6e5872..635ff81 100644 --- a/registry/generator.py +++ b/registry/generator.py @@ -118,6 +118,7 @@ class GeneratorOptions: addExtensions=None, removeExtensions=None, emitExtensions=None, + emitSpirv=None, reparentEnums=True, sortProcedure=regSortFeatures): """Constructor. @@ -148,6 +149,9 @@ class GeneratorOptions: - emitExtensions - regex matching names of extensions to actually emit interfaces for (though all requested versions are considered when deciding which interfaces to generate). + to None. + - emitSpirv - regex matching names of extensions and capabilities + to actually emit interfaces for. - reparentEnums - move <enum> elements which extend an enumerated type from <feature> or <extension> elements to the target <enums> element. This is required for almost all purposes, but the @@ -209,6 +213,10 @@ class GeneratorOptions: interfaces for (though all requested versions are considered when deciding which interfaces to generate).""" + self.emitSpirv = self.emptyRegex(emitSpirv) + """regex matching names of extensions and capabilities + to actually emit interfaces for.""" + self.reparentEnums = reparentEnums """boolean specifying whether to remove <enum> elements from <feature> or <extension> when extending an <enums> type.""" @@ -757,6 +765,14 @@ class OutputGenerator: Extend to generate as desired in your derived class.""" self.validateFeature('command', cmdinfo) + def genSpirv(self, spirv, spirvinfo, alias): + """Generate interface for a spirv element. + + - spirvinfo - SpirvInfo for a command + + Extend to generate as desired in your derived class.""" + return + def makeProtoName(self, name, tail): """Turn a `<proto>` `<name>` into C-language prototype and typedef declarations for that name. diff --git a/registry/genvk.py b/registry/genvk.py index 5680750..505f0d3 100755 --- a/registry/genvk.py +++ b/registry/genvk.py @@ -17,6 +17,7 @@ from extensionmetadocgenerator import (ExtensionMetaDocGeneratorOptions, ExtensionMetaDocOutputGenerator) from interfacedocgenerator import InterfaceDocGenerator from generator import write +from spirvcapgenerator import SpirvCapabilityOutputGenerator from hostsyncgenerator import HostSynchronizationOutputGenerator from pygenerator import PyOutputGenerator from reflib import logDiag, logWarn, setLogFile @@ -73,6 +74,9 @@ def makeGenOpts(args): # Extensions to emit (list of extensions) emitExtensions = args.emitExtensions + # SPIR-V capabilities / features to emit (list of extensions & capabilities) + emitSpirv = args.emitSpirv + # Features to include (list of features) features = args.feature @@ -87,12 +91,13 @@ def makeGenOpts(args): # Descriptive names for various regexp patterns used to select # versions and extensions - allFeatures = allExtensions = r'.*' + allSpirv = allFeatures = allExtensions = r'.*' # Turn lists of names/patterns into matching regular expressions addExtensionsPat = makeREstring(extensions, None) removeExtensionsPat = makeREstring(removeExtensions, None) emitExtensionsPat = makeREstring(emitExtensions, allExtensions) + emitSpirvPat = makeREstring(emitSpirv, allSpirv) featuresPat = makeREstring(features, allFeatures) # Copyright text prefixing all headers (list of strings). @@ -249,6 +254,25 @@ def makeGenOpts(args): reparentEnums = False) ] + genOpts['spirvcapinc'] = [ + SpirvCapabilityOutputGenerator, + DocGeneratorOptions( + conventions = conventions, + filename = 'timeMarker', + directory = directory, + genpath = None, + apiname = 'vulkan', + profile = None, + versions = featuresPat, + emitversions = featuresPat, + defaultExtensions = None, + addExtensions = addExtensionsPat, + removeExtensions = removeExtensionsPat, + emitExtensions = emitExtensionsPat, + emitSpirv = emitSpirvPat, + reparentEnums = False) + ] + # Platform extensions, in their own header files # Each element of the platforms[] array defines information for # generating a single platform: @@ -482,6 +506,8 @@ def genTarget(args): # Create generator options with parameters specified on command line makeGenOpts(args) + # pdb.set_trace() + # Select a generator matching the requested target if args.target in genOpts: createGenerator = genOpts[args.target][0] @@ -523,6 +549,9 @@ if __name__ == '__main__': parser.add_argument('-emitExtensions', action='append', default=[], help='Specify an extension or extensions to emit in targets') + parser.add_argument('-emitSpirv', action='append', + default=[], + help='Specify a SPIR-V extension or capability to emit in targets') parser.add_argument('-feature', action='append', default=[], help='Specify a core API feature name or names to add to targets') diff --git a/registry/reg.py b/registry/reg.py index c63804b..075614f 100755..100644 --- a/registry/reg.py +++ b/registry/reg.py @@ -12,7 +12,7 @@ import sys import xml.etree.ElementTree as etree from collections import defaultdict, namedtuple from generator import OutputGenerator, GeneratorOptions, write - +import pdb def apiNameMatch(str, supported): """Return whether a required api name matches a pattern specified for an @@ -253,6 +253,12 @@ class FeatureInfo(BaseInfo): self.number = 0 self.supported = elem.get('supported') +class SpirvInfo(BaseInfo): + """Registry information about an API <spirvextensions> + or <spirvcapability>.""" + + def __init__(self, elem): + BaseInfo.__init__(self, elem) class Registry: """Object representing an API registry, loaded from an XML file.""" @@ -299,6 +305,12 @@ class Registry: self.extdict = {} "dictionary of FeatureInfo objects for `<extension>` elements keyed by extension name" + self.spirvextdict = {} + "dictionary of FeatureInfo objects for `<spirvextension>` elements keyed by spirv extension name" + + self.spirvcapdict = {} + "dictionary of FeatureInfo objects for `<spirvcapability>` elements keyed by spirv capability name" + self.emitFeatures = False """True to actually emit features for a version / extension, or False to just treat them as emitted""" @@ -344,10 +356,10 @@ class Registry: Intended for internal use only. - - elem - `<type>`/`<enums>`/`<enum>`/`<command>`/`<feature>`/`<extension>` Element - - info - corresponding {Type|Group|Enum|Cmd|Feature}Info object - - infoName - 'type' / 'group' / 'enum' / 'command' / 'feature' / 'extension' - - dictionary - self.{type|group|enum|cmd|api|ext}dict + - elem - `<type>`/`<enums>`/`<enum>`/`<command>`/`<feature>`/`<extension>`/`<spirvextension>`/`<spirvcapability>` Element + - info - corresponding {Type|Group|Enum|Cmd|Feature|Spirv}Info object + - infoName - 'type' / 'group' / 'enum' / 'command' / 'feature' / 'extension' / 'spirvextension' / 'spirvcapability' + - dictionary - self.{type|group|enum|cmd|api|ext|spirvext|spirvcap}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 @@ -591,6 +603,15 @@ class Registry: for parent in self.validextensionstructs: self.validextensionstructs[parent].sort() + # Parse out all spirv tags in dictionaries + # Use addElementInfo to catch duplicates + for spirv in self.reg.findall('spirvextensions/spirvextension'): + spirvInfo = SpirvInfo(spirv) + self.addElementInfo(spirv, spirvInfo, 'spirvextension', self.spirvextdict) + for spirv in self.reg.findall('spirvcapabilities/spirvcapability'): + spirvInfo = SpirvInfo(spirv) + self.addElementInfo(spirv, spirvInfo, 'spirvcapability', self.spirvcapdict) + def dumpReg(self, maxlen=120, filehandle=sys.stdout): """Dump all the dictionaries constructed from the Registry object. @@ -623,6 +644,13 @@ class Registry: for key in self.extdict: write(' Extension', key, '->', etree.tostring(self.extdict[key].elem)[0:maxlen], file=filehandle) + write('// SPIR-V', file=filehandle) + for key in self.spirvextdict: + write(' SPIR-V Extension', key, '->', + etree.tostring(self.spirvextdict[key].elem)[0:maxlen], file=filehandle) + for key in self.spirvcapdict: + write(' SPIR-V Capability', key, '->', + etree.tostring(self.spirvcapdict[key].elem)[0:maxlen], file=filehandle) def markTypeRequired(self, typename, required): """Require (along with its dependencies) or remove (but not its dependencies) a type. @@ -1126,6 +1154,19 @@ class Registry: for c in features.findall('command'): self.generateFeature(c.get('name'), 'command', self.cmddict) + def generateSpirv(self, spirv, dictionary): + if spirv is None: + self.gen.logMsg('diag', 'No entry found for element', name, + 'returning!') + return + + name = spirv.elem.get('name') + # No known alias for spirv elements + alias = None + if spirv.emit: + genProc = self.gen.genSpirv + genProc(spirv, name, alias) + def apiGen(self): """Generate interface for specified versions using the current generator and generator options""" @@ -1145,6 +1186,7 @@ class Registry: regAddExtensions = re.compile(self.genOpts.addExtensions) regRemoveExtensions = re.compile(self.genOpts.removeExtensions) regEmitExtensions = re.compile(self.genOpts.emitExtensions) + regEmitSpirv = re.compile(self.genOpts.emitSpirv) # Get all matching API feature names & add to list of FeatureInfo # Note we used to select on feature version attributes, not names. @@ -1233,6 +1275,20 @@ class Registry: self.gen.logMsg('diag', 'NOT including extension', extName, '(does not match api attribute or explicitly requested extensions)') + # Add all spirv elements to list + # generators decide to emit them all or not + # Currently no filtering as no client of these elements needs filtering + spirvexts = [] + for key in self.spirvextdict: + si = self.spirvextdict[key] + si.emit = (regEmitSpirv.match(key) is not None) + spirvexts.append(si) + spirvcaps = [] + for key in self.spirvcapdict: + si = self.spirvcapdict[key] + si.emit = (regEmitSpirv.match(key) is not None) + spirvcaps.append(si) + # Sort the features list, if a sort procedure is defined if self.genOpts.sortProcedure: self.genOpts.sortProcedure(features) @@ -1271,6 +1327,11 @@ class Registry: self.gen.beginFeature(f.elem, emit) self.generateRequiredInterface(f.elem) self.gen.endFeature() + # Generate spirv elements + for s in spirvexts: + self.generateSpirv(s, self.spirvextdict) + for s in spirvcaps: + self.generateSpirv(s, self.spirvcapdict) self.gen.endFile() def apiReset(self): diff --git a/registry/validusage.json b/registry/validusage.json index 9c768be..a10688b 100644 --- a/registry/validusage.json +++ b/registry/validusage.json @@ -1,9 +1,9 @@ { "version info": { "schema version": 2, - "api version": "1.2.158", - "comment": "from git branch: github-main commit: 9fd8fd599b47a67b2eb078b2f5c9e6a2adc922a4", - "date": "2020-10-19 04:39:54Z" + "api version": "1.2.159", + "comment": "from git branch: github-main commit: 9adbc1846ddad202a0584f5c03a1916cf9801179", + "date": "2020-11-02 05:18:48Z" }, "validation": { "vkGetInstanceProcAddr": { @@ -4467,6 +4467,14 @@ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2</code>" }, { + "vuid": "VUID-VkAttachmentDescription2-pNext-pNext", + "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkAttachmentDescriptionStencilLayout\">VkAttachmentDescriptionStencilLayout</a>" + }, + { + "vuid": "VUID-VkAttachmentDescription2-sType-unique", + "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique" + }, + { "vuid": "VUID-VkAttachmentDescription2-flags-parameter", "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkAttachmentDescriptionFlagBits\">VkAttachmentDescriptionFlagBits</a> values" }, @@ -4665,6 +4673,14 @@ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2</code>" }, { + "vuid": "VUID-VkSubpassDescription2-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=\"#VkFragmentShadingRateAttachmentInfoKHR\">VkFragmentShadingRateAttachmentInfoKHR</a> or <a href=\"#VkSubpassDescriptionDepthStencilResolve\">VkSubpassDescriptionDepthStencilResolve</a>" + }, + { + "vuid": "VUID-VkSubpassDescription2-sType-unique", + "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique" + }, + { "vuid": "VUID-VkSubpassDescription2-flags-parameter", "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkSubpassDescriptionFlagBits\">VkSubpassDescriptionFlagBits</a> values" }, @@ -4705,6 +4721,12 @@ "text": " If <code>flags</code> includes <code>VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX</code>, it <strong class=\"purple\">must</strong> also include <code>VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX</code>" } ], + "(VK_VERSION_1_2,VK_KHR_create_renderpass2)+(VK_EXT_image_drm_format_modifier)": [ + { + "vuid": "VUID-VkSubpassDescription2-attachment-04563", + "text": " If the <code>attachment</code> member of any element of <code>pInputAttachments</code> is not <code>VK_ATTACHMENT_UNUSED</code>, then the <code>aspectMask</code> member <strong class=\"purple\">must</strong> not include <code>VK_IMAGE_ASPECT_MEMORY_PLANE_i_BIT_EXT</code> for any index <code>i</code>" + } + ], "(VK_VERSION_1_2,VK_KHR_create_renderpass2)+(VK_KHR_fragment_shading_rate)": [ { "vuid": "VUID-VkSubpassDescription2-pFragmentShadingRateAttachment-04522", @@ -4847,6 +4869,14 @@ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2</code>" }, { + "vuid": "VUID-VkAttachmentReference2-pNext-pNext", + "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkAttachmentReferenceStencilLayout\">VkAttachmentReferenceStencilLayout</a>" + }, + { + "vuid": "VUID-VkAttachmentReference2-sType-unique", + "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique" + }, + { "vuid": "VUID-VkAttachmentReference2-layout-parameter", "text": " <code>layout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value" } @@ -4953,6 +4983,10 @@ "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2</code>" }, { + "vuid": "VUID-VkSubpassDependency2-pNext-pNext", + "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" + }, + { "vuid": "VUID-VkSubpassDependency2-srcStageMask-parameter", "text": " <code>srcStageMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineStageFlagBits\">VkPipelineStageFlagBits</a> values" }, @@ -10559,7 +10593,7 @@ "text": " If <code>flags</code> contains <code>VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT</code> <code>format</code> <strong class=\"purple\">must</strong> be a depth or depth/stencil format" } ], - "(VK_EXT_separate_stencil_usage)": [ + "(VK_VERSION_1_2,VK_EXT_separate_stencil_usage)": [ { "vuid": "VUID-VkImageCreateInfo-format-02795", "text": " If <code>format</code> is a depth-stencil format, <code>usage</code> includes <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>, and the <code>pNext</code> chain includes a <a href=\"#VkImageStencilUsageCreateInfo\">VkImageStencilUsageCreateInfo</a> structure, then its <a href=\"#VkImageStencilUsageCreateInfo\">VkImageStencilUsageCreateInfo</a>::<code>stencilUsage</code> member <strong class=\"purple\">must</strong> also include <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>" @@ -10635,7 +10669,7 @@ ] }, "VkImageStencilUsageCreateInfo": { - "(VK_EXT_separate_stencil_usage)": [ + "(VK_VERSION_1_2,VK_EXT_separate_stencil_usage)": [ { "vuid": "VUID-VkImageStencilUsageCreateInfo-stencilUsage-02539", "text": " If <code>stencilUsage</code> includes <code>VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT</code>, it <strong class=\"purple\">must</strong> not include bits other than <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code> or <code>VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT</code>" @@ -11241,13 +11275,13 @@ "text": " If <code>image</code> was created with <code>flags</code> containing <code>VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT</code> and <code>usage</code> containing <code>VK_IMAGE_USAGE_SAMPLED_BIT</code>, <code>subresourceRange.layerCount</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#limits-maxSubsampledArrayLayers\"><code>VkPhysicalDeviceFragmentDensityMap2PropertiesEXT</code>::<code>maxSubsampledArrayLayers</code></a>" } ], - "(VK_VERSION_1_1,VK_KHR_maintenance2)+!(VK_EXT_separate_stencil_usage)": [ + "(VK_VERSION_1_1,VK_KHR_maintenance2)+!(VK_VERSION_1_2+VK_EXT_separate_stencil_usage)": [ { "vuid": "VUID-VkImageViewCreateInfo-pNext-02661", "text": " If the <code>pNext</code> chain includes a <a href=\"#VkImageViewUsageCreateInfo\">VkImageViewUsageCreateInfo</a> structure, its <code>usage</code> member <strong class=\"purple\">must</strong> not include any bits that were not set in the <code>usage</code> member of the <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> structure used to create <code>image</code>" } ], - "(VK_VERSION_1_1,VK_KHR_maintenance2)+(VK_EXT_separate_stencil_usage)": [ + "(VK_VERSION_1_1,VK_KHR_maintenance2)+(VK_VERSION_1_2,VK_EXT_separate_stencil_usage)": [ { "vuid": "VUID-VkImageViewCreateInfo-pNext-02662", "text": " If the <code>pNext</code> chain includes a <a href=\"#VkImageViewUsageCreateInfo\">VkImageViewUsageCreateInfo</a> structure, and <code>image</code> was not created with a <a href=\"#VkImageStencilUsageCreateInfo\">VkImageStencilUsageCreateInfo</a> structure included in the <code>pNext</code> chain of <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>, its <code>usage</code> member <strong class=\"purple\">must</strong> not include any bits that were not set in the <code>usage</code> member of the <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> structure used to create <code>image</code>" @@ -19281,14 +19315,14 @@ ], "core": [ { - "vuid": "VUID-vkCmdCopyBufferToImage-pRegions-00171", - "text": " <code>srcBuffer</code> <strong class=\"purple\">must</strong> be large enough to contain all buffer locations that are accessed according to <a href=\"#copies-buffers-images-addressing\">Buffer and Image Addressing</a>, for each element of <code>pRegions</code>" - }, - { "vuid": "VUID-vkCmdCopyBufferToImage-pRegions-00172", "text": " The image region specified by each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be a region that is contained within <code>dstImage</code>" }, { + "vuid": "VUID-vkCmdCopyBufferToImage-pRegions-00171", + "text": " <code>srcBuffer</code> <strong class=\"purple\">must</strong> be large enough to contain all buffer locations that are accessed according to <a href=\"#copies-buffers-images-addressing\">Buffer and Image Addressing</a>, for each element of <code>pRegions</code>" + }, + { "vuid": "VUID-vkCmdCopyBufferToImage-pRegions-00173", "text": " The union of all source regions, and the union of all destination regions, specified by the elements of <code>pRegions</code>, <strong class=\"purple\">must</strong> not overlap in memory" }, @@ -19342,11 +19376,11 @@ }, { "vuid": "VUID-vkCmdCopyBufferToImage-imageOffset-00197", - "text": " For each element of <code>pRegions</code>, <code>imageOffset.x</code> and <span class=\"eq\">(<code>imageExtent.width</code> + <code>imageOffset.x</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the width of the specified <code>imageSubresource</code> of {imageparam}" + "text": " For each element of <code>pRegions</code>, <code>imageOffset.x</code> and <span class=\"eq\">(<code>imageExtent.width</code> + <code>imageOffset.x</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the width of the specified <code>imageSubresource</code> of <code>dstImage</code>" }, { "vuid": "VUID-vkCmdCopyBufferToImage-imageOffset-00198", - "text": " For each element of <code>pRegions</code>, <code>imageOffset.y</code> and <span class=\"eq\">(imageExtent.height + <code>imageOffset.y</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the height of the specified <code>imageSubresource</code> of {imageparam}" + "text": " For each element of <code>pRegions</code>, <code>imageOffset.y</code> and <span class=\"eq\">(imageExtent.height + <code>imageOffset.y</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the height of the specified <code>imageSubresource</code> of <code>dstImage</code>" }, { "vuid": "VUID-vkCmdCopyBufferToImage-srcImage-00199", @@ -19505,14 +19539,14 @@ ], "core": [ { - "vuid": "VUID-vkCmdCopyImageToBuffer-pRegions-00183", - "text": " <code>dstBuffer</code> <strong class=\"purple\">must</strong> be large enough to contain all buffer locations that are accessed according to <a href=\"#copies-buffers-images-addressing\">Buffer and Image Addressing</a>, for each element of <code>pRegions</code>" - }, - { "vuid": "VUID-vkCmdCopyImageToBuffer-pRegions-00182", "text": " The image region specified by each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be a region that is contained within <code>srcImage</code>" }, { + "vuid": "VUID-vkCmdCopyImageToBuffer-pRegions-00183", + "text": " <code>dstBuffer</code> <strong class=\"purple\">must</strong> be large enough to contain all buffer locations that are accessed according to <a href=\"#copies-buffers-images-addressing\">Buffer and Image Addressing</a>, for each element of <code>pRegions</code>" + }, + { "vuid": "VUID-vkCmdCopyImageToBuffer-pRegions-00184", "text": " The union of all source regions, and the union of all destination regions, specified by the elements of <code>pRegions</code>, <strong class=\"purple\">must</strong> not overlap in memory" }, @@ -19562,11 +19596,11 @@ }, { "vuid": "VUID-vkCmdCopyImageToBuffer-imageOffset-00197", - "text": " For each element of <code>pRegions</code>, <code>imageOffset.x</code> and <span class=\"eq\">(<code>imageExtent.width</code> + <code>imageOffset.x</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the width of the specified <code>imageSubresource</code> of {imageparam}" + "text": " For each element of <code>pRegions</code> , <code>imageOffset.x</code> and <span class=\"eq\">(<code>imageExtent.width</code> + <code>imageOffset.x</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the width of the specified <code>imageSubresource</code> of <code>srcImage</code>" }, { "vuid": "VUID-vkCmdCopyImageToBuffer-imageOffset-00198", - "text": " For each element of <code>pRegions</code>, <code>imageOffset.y</code> and <span class=\"eq\">(imageExtent.height + <code>imageOffset.y</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the height of the specified <code>imageSubresource</code> of {imageparam}" + "text": " For each element of <code>pRegions</code> , <code>imageOffset.y</code> and <span class=\"eq\">(imageExtent.height + <code>imageOffset.y</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the height of the specified <code>imageSubresource</code> of <code>srcImage</code>" }, { "vuid": "VUID-vkCmdCopyImageToBuffer-srcImage-00199", @@ -19761,16 +19795,32 @@ ] }, "VkCopyBufferToImageInfo2KHR": { + "(VK_KHR_copy_commands2)+!(VK_QCOM_rotated_copy_commands)": [ + { + "vuid": "VUID-VkCopyBufferToImageInfo2KHR-pRegions-00172", + "text": " The image region specified by each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be a region that is contained within <code>dstImage</code>" + } + ], + "(VK_KHR_copy_commands2)+(VK_QCOM_rotated_copy_commands)": [ + { + "vuid": "VUID-VkCopyBufferToImageInfo2KHR-pRegions-04554", + "text": " If the image region specified by each element of <code>pRegions</code> does contain <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a> in its <code>pNext</code> chain, the rotated destination region as described in <a href=\"#copies-buffers-images-rotation-addressing\">Buffer and Image Addressing with Rotation</a> <strong class=\"purple\">must</strong> be contained within <code>dstImage</code>." + }, + { + "vuid": "VUID-VkCopyBufferToImageInfo2KHR-pRegions-04555", + "text": " If any element of <code>pRegions</code> contains <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a> in its <code>pNext</code> chain, then the <code>dstImage</code> <strong class=\"purple\">must</strong> not be a <a href=\"#blocked-image\">blocked image</a>." + }, + { + "vuid": "VUID-VkCopyBufferToImageInfo2KHR-pRegions-04556", + "text": " If any element of <code>pRegions</code> contains <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a> in its <code>pNext</code> chain, then the <code>dstImage</code> <strong class=\"purple\">must</strong> be of type <code>VK_IMAGE_TYPE_2D</code> and <strong class=\"purple\">must</strong> not be a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar format</a>." + } + ], "core": [ { "vuid": "VUID-VkCopyBufferToImageInfo2KHR-pRegions-00171", "text": " <code>srcBuffer</code> <strong class=\"purple\">must</strong> be large enough to contain all buffer locations that are accessed according to <a href=\"#copies-buffers-images-addressing\">Buffer and Image Addressing</a>, for each element of <code>pRegions</code>" }, { - "vuid": "VUID-VkCopyBufferToImageInfo2KHR-pRegions-00172", - "text": " The image region specified by each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be a region that is contained within <code>dstImage</code>" - }, - { "vuid": "VUID-VkCopyBufferToImageInfo2KHR-pRegions-00173", "text": " The union of all source regions, and the union of all destination regions, specified by the elements of <code>pRegions</code>, <strong class=\"purple\">must</strong> not overlap in memory" }, @@ -19824,11 +19874,11 @@ }, { "vuid": "VUID-VkCopyBufferToImageInfo2KHR-imageOffset-00197", - "text": " For each element of <code>pRegions</code>, <code>imageOffset.x</code> and <span class=\"eq\">(<code>imageExtent.width</code> + <code>imageOffset.x</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the width of the specified <code>imageSubresource</code> of {imageparam}" + "text": " For each element of <code>pRegions</code>" }, { "vuid": "VUID-VkCopyBufferToImageInfo2KHR-imageOffset-00198", - "text": " For each element of <code>pRegions</code>, <code>imageOffset.y</code> and <span class=\"eq\">(imageExtent.height + <code>imageOffset.y</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the height of the specified <code>imageSubresource</code> of {imageparam}" + "text": " For each element of <code>pRegions</code>" }, { "vuid": "VUID-VkCopyBufferToImageInfo2KHR-srcImage-00199", @@ -20003,16 +20053,32 @@ ] }, "VkCopyImageToBufferInfo2KHR": { + "(VK_KHR_copy_commands2)+!(VK_QCOM_rotated_copy_commands)": [ + { + "vuid": "VUID-VkCopyImageToBufferInfo2KHR-pRegions-00182", + "text": " The image region specified by each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be a region that is contained within <code>srcImage</code>" + } + ], + "(VK_KHR_copy_commands2)+(VK_QCOM_rotated_copy_commands)": [ + { + "vuid": "VUID-VkCopyImageToBufferInfo2KHR-pRegions-04557", + "text": " If the image region specified by each element of <code>pRegions</code> does contain <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a> in its <code>pNext</code> chain, the rotated source region as described in <a href=\"#copies-buffers-images-rotation-addressing\">Buffer and Image Addressing with Rotation</a> <strong class=\"purple\">must</strong> be contained within <code>srcImage</code>." + }, + { + "vuid": "VUID-VkCopyImageToBufferInfo2KHR-pRegions-04558", + "text": " If any element of <code>pRegions</code> contains <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a> in its <code>pNext</code> chain, then the <code>srcImage</code> <strong class=\"purple\">must</strong> not be a <a href=\"#blocked-image\">blocked image</a>" + }, + { + "vuid": "VUID-VkCopyImageToBufferInfo2KHR-pRegions-04559", + "text": " If any element of <code>pRegions</code> contains <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a> in its <code>pNext</code> chain, then the <code>srcImage</code> <strong class=\"purple\">must</strong> be of type <code>VK_IMAGE_TYPE_2D</code>, and <strong class=\"purple\">must</strong> not be a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar format</a>." + } + ], "core": [ { "vuid": "VUID-VkCopyImageToBufferInfo2KHR-pRegions-00183", "text": " <code>dstBuffer</code> <strong class=\"purple\">must</strong> be large enough to contain all buffer locations that are accessed according to <a href=\"#copies-buffers-images-addressing\">Buffer and Image Addressing</a>, for each element of <code>pRegions</code>" }, { - "vuid": "VUID-VkCopyImageToBufferInfo2KHR-pRegions-00182", - "text": " The image region specified by each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be a region that is contained within <code>srcImage</code>" - }, - { "vuid": "VUID-VkCopyImageToBufferInfo2KHR-pRegions-00184", "text": " The union of all source regions, and the union of all destination regions, specified by the elements of <code>pRegions</code>, <strong class=\"purple\">must</strong> not overlap in memory" }, @@ -20062,11 +20128,11 @@ }, { "vuid": "VUID-VkCopyImageToBufferInfo2KHR-imageOffset-00197", - "text": " For each element of <code>pRegions</code>, <code>imageOffset.x</code> and <span class=\"eq\">(<code>imageExtent.width</code> + <code>imageOffset.x</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the width of the specified <code>imageSubresource</code> of {imageparam}" + "text": " For each element of <code>pRegions</code>" }, { "vuid": "VUID-VkCopyImageToBufferInfo2KHR-imageOffset-00198", - "text": " For each element of <code>pRegions</code>, <code>imageOffset.y</code> and <span class=\"eq\">(imageExtent.height + <code>imageOffset.y</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the height of the specified <code>imageSubresource</code> of {imageparam}" + "text": " For each element of <code>pRegions</code>" }, { "vuid": "VUID-VkCopyImageToBufferInfo2KHR-srcImage-00199", @@ -20218,7 +20284,11 @@ }, { "vuid": "VUID-VkBufferImageCopy2KHR-pNext-pNext", - "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" + "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a>" + }, + { + "vuid": "VUID-VkBufferImageCopy2KHR-sType-unique", + "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique" }, { "vuid": "VUID-VkBufferImageCopy2KHR-imageSubresource-parameter", @@ -20226,6 +20296,18 @@ } ] }, + "VkCopyCommandTransformInfoQCOM": { + "(VK_QCOM_rotated_copy_commands)": [ + { + "vuid": "VUID-VkCopyCommandTransformInfoQCOM-transform-04560", + "text": " <code>transform</code> <strong class=\"purple\">must</strong> be <code>VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR</code>, <code>VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR</code>, <code>VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR</code>, or <code>VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR</code>" + }, + { + "vuid": "VUID-VkCopyCommandTransformInfoQCOM-sType-sType", + "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COPY_COMMAND_TRANSFORM_INFO_QCOM</code>" + } + ] + }, "vkCmdBlitImage": { "(VK_VERSION_1_1)": [ { @@ -20725,6 +20807,16 @@ "text": " <code>dstImage</code> and <code>srcImage</code> <strong class=\"purple\">must</strong> not have been created with <code>flags</code> containing <code>VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT</code>" } ], + "(VK_QCOM_rotated_copy_commands)": [ + { + "vuid": "VUID-VkBlitImageInfo2KHR-pRegions-04561", + "text": " If any element of <code>pRegions</code> contains <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a> in its <code>pNext</code> chain, then <code>srcImage</code> and <code>dstImage</code> <strong class=\"purple\">must</strong> not be a block-compressed image." + }, + { + "vuid": "VUID-VkBlitImageInfo2KHR-pRegions-04562", + "text": " If any element of <code>pRegions</code> contains <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a> in its <code>pNext</code> chain, then the <code>srcImage</code> <strong class=\"purple\">must</strong> be of type <code>VK_IMAGE_TYPE_2D</code> and <strong class=\"purple\">must</strong> not be a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar format</a>." + } + ], "(VK_KHR_copy_commands2)": [ { "vuid": "VUID-VkBlitImageInfo2KHR-sType-sType", @@ -20786,7 +20878,11 @@ }, { "vuid": "VUID-VkImageBlit2KHR-pNext-pNext", - "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" + "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a>" + }, + { + "vuid": "VUID-VkImageBlit2KHR-sType-unique", + "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique" }, { "vuid": "VUID-VkImageBlit2KHR-srcSubresource-parameter", @@ -29732,7 +29828,7 @@ "(VK_KHR_surface)+(VK_EXT_display_surface_counter)": [ { "vuid": "VUID-VkSurfaceCapabilities2EXT-supportedSurfaceCounters-01246", - "text": " <code>supportedSurfaceCounters</code> <strong class=\"purple\">must</strong> not include <code>VK_SURFACE_COUNTER_VBLANK_EXT</code> unless the surface queried is a <a href=\"#wsi-display-surfaces\">display surface</a>" + "text": " <code>supportedSurfaceCounters</code> <strong class=\"purple\">must</strong> not include <code>VK_SURFACE_COUNTER_VBLANK_BIT_EXT</code> unless the surface queried is a <a href=\"#wsi-display-surfaces\">display surface</a>" }, { "vuid": "VUID-VkSurfaceCapabilities2EXT-sType-sType", @@ -30943,6 +31039,10 @@ "vkCreatePrivateDataSlotEXT": { "(VK_EXT_private_data)": [ { + "vuid": "VUID-vkCreatePrivateDataSlotEXT-privateData-04564", + "text": " The <a href=\"#features-privateData\"><code>privateData</code></a> feature <strong class=\"purple\">must</strong> be enabled" + }, + { "vuid": "VUID-vkCreatePrivateDataSlotEXT-device-parameter", "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" }, diff --git a/registry/vk.xml b/registry/vk.xml index 8e3ad18..4a96993 100644 --- a/registry/vk.xml +++ b/registry/vk.xml @@ -135,7 +135,7 @@ branch of the member gitlab server. <type category="define">// Vulkan 1.2 version number #define <name>VK_API_VERSION_1_2</name> <type>VK_MAKE_VERSION</type>(1, 2, 0)// Patch version should always be set to 0</type> <type category="define">// Version of this file -#define <name>VK_HEADER_VERSION</name> 158</type> +#define <name>VK_HEADER_VERSION</name> 159</type> <type category="define" requires="VK_HEADER_VERSION">// Complete version of this file #define <name>VK_HEADER_VERSION_COMPLETE</name> <type>VK_MAKE_VERSION</type>(1, 2, VK_HEADER_VERSION)</type> @@ -1899,7 +1899,7 @@ typedef void <name>CAMetalLayer</name>; </type> <type category="struct" name="VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo"> <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV"><type>VkStructureType</type><name>sType</name></member> - <member noautovalidity="true"><type>void</type>* <name>pNext</name></member> + <member><type>void</type>* <name>pNext</name></member> <member><type>VkBool32</type> <name>deviceGeneratedCommands</name></member> </type> <type category="struct" name="VkDevicePrivateDataCreateInfoEXT" allowduplicate="true" structextends="VkDeviceCreateInfo"> @@ -1919,7 +1919,7 @@ typedef void <name>CAMetalLayer</name>; </type> <type category="struct" name="VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV" structextends="VkPhysicalDeviceProperties2" returnedonly="true"> <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV"><type>VkStructureType</type> <name>sType</name></member> - <member noautovalidity="true"><type>void</type>* <name>pNext</name></member> + <member><type>void</type>* <name>pNext</name></member> <member><type>uint32_t</type> <name>maxGraphicsShaderGroupCount</name></member> <member><type>uint32_t</type> <name>maxIndirectSequenceCount</name></member> <member><type>uint32_t</type> <name>maxIndirectCommandsTokenCount</name></member> @@ -2360,7 +2360,7 @@ typedef void <name>CAMetalLayer</name>; </type> <type category="struct" name="VkPhysicalDeviceMultiviewFeatures" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo"> <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES"><type>VkStructureType</type> <name>sType</name></member> - <member noautovalidity="true"><type>void</type>* <name>pNext</name></member> + <member><type>void</type>* <name>pNext</name></member> <member><type>VkBool32</type> <name>multiview</name><comment>Multiple views in a renderpass</comment></member> <member><type>VkBool32</type> <name>multiviewGeometryShader</name><comment>Multiple views in a renderpass w/ geometry shader</comment></member> <member><type>VkBool32</type> <name>multiviewTessellationShader</name><comment>Multiple views in a renderpass w/ tessellation shader</comment></member> @@ -2671,7 +2671,7 @@ typedef void <name>CAMetalLayer</name>; </type> <type category="struct" name="VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX" returnedonly="true" structextends="VkPhysicalDeviceProperties2"> <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX"><type>VkStructureType</type> <name>sType</name></member> - <member noautovalidity="true"><type>void</type>* <name>pNext</name></member> + <member><type>void</type>* <name>pNext</name></member> <member><type>VkBool32</type> <name>perViewPositionAllComponents</name></member> </type> <type category="struct" name="VkInputAttachmentAspectReference"> @@ -2730,12 +2730,12 @@ typedef void <name>CAMetalLayer</name>; </type> <type category="struct" name="VkSharedPresentSurfaceCapabilitiesKHR" returnedonly="true" structextends="VkSurfaceCapabilities2KHR"> <member values="VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR"><type>VkStructureType</type> <name>sType</name></member> - <member noautovalidity="true"><type>void</type>* <name>pNext</name></member> + <member><type>void</type>* <name>pNext</name></member> <member optional="true"><type>VkImageUsageFlags</type> <name>sharedPresentSupportedUsageFlags</name><comment>Supported image usage flags if swapchain created using a shared present mode</comment></member> </type> <type category="struct" name="VkPhysicalDevice16BitStorageFeatures" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo"> <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES"><type>VkStructureType</type> <name>sType</name></member> - <member noautovalidity="true"><type>void</type>* <name>pNext</name></member> + <member><type>void</type>* <name>pNext</name></member> <member><type>VkBool32</type> <name>storageBuffer16BitAccess</name><comment>16-bit integer/floating-point variables supported in BufferBlock</comment></member> <member><type>VkBool32</type> <name>uniformAndStorageBuffer16BitAccess</name><comment>16-bit integer/floating-point variables supported in BufferBlock and Block</comment></member> <member><type>VkBool32</type> <name>storagePushConstant16</name><comment>16-bit integer/floating-point variables supported in PushConstant</comment></member> @@ -2851,13 +2851,13 @@ typedef void <name>CAMetalLayer</name>; <type category="struct" name="VkImagePlaneMemoryRequirementsInfoKHR" alias="VkImagePlaneMemoryRequirementsInfo"/> <type category="struct" name="VkPhysicalDeviceSamplerYcbcrConversionFeatures" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo"> <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES"><type>VkStructureType</type> <name>sType</name></member> - <member noautovalidity="true"><type>void</type>* <name>pNext</name></member> + <member><type>void</type>* <name>pNext</name></member> <member><type>VkBool32</type> <name>samplerYcbcrConversion</name><comment>Sampler color conversion supported</comment></member> </type> <type category="struct" name="VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR" alias="VkPhysicalDeviceSamplerYcbcrConversionFeatures"/> <type category="struct" name="VkSamplerYcbcrConversionImageFormatProperties" returnedonly="true" structextends="VkImageFormatProperties2"> <member values="VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES"><type>VkStructureType</type> <name>sType</name></member> - <member noautovalidity="true"><type>void</type>* <name>pNext</name></member> + <member><type>void</type>* <name>pNext</name></member> <member><type>uint32_t</type> <name>combinedImageSamplerDescriptorCount</name></member> </type> <type category="struct" name="VkSamplerYcbcrConversionImageFormatPropertiesKHR" alias="VkSamplerYcbcrConversionImageFormatProperties"/> @@ -2965,12 +2965,12 @@ typedef void <name>CAMetalLayer</name>; <type category="struct" name="VkSamplerReductionModeCreateInfoEXT" alias="VkSamplerReductionModeCreateInfo"/> <type category="struct" name="VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo"> <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member> - <member noautovalidity="true"><type>void</type>* <name>pNext</name></member> + <member><type>void</type>* <name>pNext</name></member> <member><type>VkBool32</type> <name>advancedBlendCoherentOperations</name></member> </type> <type category="struct" name="VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT" returnedonly="true" structextends="VkPhysicalDeviceProperties2"> <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT"><type>VkStructureType</type> <name>sType</name></member> - <member noautovalidity="true"><type>void</type>* <name>pNext</name></member> + <member><type>void</type>* <name>pNext</name></member> <member><type>uint32_t</type> <name>advancedBlendMaxColorAttachments</name></member> <member><type>VkBool32</type> <name>advancedBlendIndependentBlend</name></member> <member><type>VkBool32</type> <name>advancedBlendNonPremultipliedSrcColor</name></member> @@ -3054,13 +3054,13 @@ typedef void <name>CAMetalLayer</name>; <type category="struct" name="VkDescriptorSetLayoutSupportKHR" alias="VkDescriptorSetLayoutSupport"/> <type category="struct" name="VkPhysicalDeviceShaderDrawParametersFeatures" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo"> <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES"><type>VkStructureType</type> <name>sType</name></member> - <member noautovalidity="true"><type>void</type>* <name>pNext</name></member> + <member><type>void</type>* <name>pNext</name></member> <member><type>VkBool32</type> <name>shaderDrawParameters</name></member> </type> <type category="struct" name="VkPhysicalDeviceShaderDrawParameterFeatures" alias="VkPhysicalDeviceShaderDrawParametersFeatures"/> <type category="struct" name="VkPhysicalDeviceShaderFloat16Int8Features" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo"> <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES"><type>VkStructureType</type> <name>sType</name></member> - <member noautovalidity="true"><type>void</type>* <name>pNext</name></member> + <member><type>void</type>* <name>pNext</name></member> <member><type>VkBool32</type> <name>shaderFloat16</name><comment>16-bit floats (halfs) in shaders</comment></member> <member><type>VkBool32</type> <name>shaderInt8</name><comment>8-bit integers in shaders</comment></member> </type> @@ -3090,7 +3090,7 @@ typedef void <name>CAMetalLayer</name>; <type category="struct" name="VkPhysicalDeviceFloatControlsPropertiesKHR" alias="VkPhysicalDeviceFloatControlsProperties"/> <type category="struct" name="VkPhysicalDeviceHostQueryResetFeatures" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo"> <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES"><type>VkStructureType</type> <name>sType</name></member> - <member noautovalidity="true"><type>void</type>* <name>pNext</name></member> + <member><type>void</type>* <name>pNext</name></member> <member><type>VkBool32</type> <name>hostQueryReset</name></member> </type> <type category="struct" name="VkPhysicalDeviceHostQueryResetFeaturesEXT" alias="VkPhysicalDeviceHostQueryResetFeatures"/> @@ -3185,7 +3185,7 @@ typedef void <name>CAMetalLayer</name>; </type> <type category="struct" name="VkPhysicalDeviceDeviceMemoryReportFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo"> <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_MEMORY_REPORT_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member> - <member noautovalidity="true"><type>void</type>* <name>pNext</name></member> + <member><type>void</type>* <name>pNext</name></member> <member><type>VkBool32</type> <name>deviceMemoryReport</name></member> </type> <type category="struct" name="VkDeviceDeviceMemoryReportCreateInfoEXT" allowduplicate="true" structextends="VkDeviceCreateInfo"> @@ -3273,7 +3273,7 @@ typedef void <name>CAMetalLayer</name>; </type> <type category="struct" name="VkPhysicalDeviceDescriptorIndexingFeatures" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo"> <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES"><type>VkStructureType</type> <name>sType</name></member> - <member noautovalidity="true"><type>void</type>* <name>pNext</name></member> + <member><type>void</type>* <name>pNext</name></member> <member><type>VkBool32</type> <name>shaderInputAttachmentArrayDynamicIndexing</name></member> <member><type>VkBool32</type> <name>shaderUniformTexelBufferArrayDynamicIndexing</name></member> <member><type>VkBool32</type> <name>shaderStorageTexelBufferArrayDynamicIndexing</name></member> @@ -3298,7 +3298,7 @@ typedef void <name>CAMetalLayer</name>; <type category="struct" name="VkPhysicalDeviceDescriptorIndexingFeaturesEXT" alias="VkPhysicalDeviceDescriptorIndexingFeatures"/> <type category="struct" name="VkPhysicalDeviceDescriptorIndexingProperties" returnedonly="true" structextends="VkPhysicalDeviceProperties2"> <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES"><type>VkStructureType</type> <name>sType</name></member> - <member noautovalidity="true"><type>void</type>* <name>pNext</name></member> + <member><type>void</type>* <name>pNext</name></member> <member><type>uint32_t</type> <name>maxUpdateAfterBindDescriptorsInAllPools</name></member> <member><type>VkBool32</type> <name>shaderUniformBufferArrayNonUniformIndexingNative</name></member> <member><type>VkBool32</type> <name>shaderSampledImageArrayNonUniformIndexingNative</name></member> @@ -3346,7 +3346,7 @@ typedef void <name>CAMetalLayer</name>; <type category="struct" name="VkDescriptorSetVariableDescriptorCountLayoutSupportEXT" alias="VkDescriptorSetVariableDescriptorCountLayoutSupport"/> <type category="struct" name="VkAttachmentDescription2"> <member values="VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2"><type>VkStructureType</type> <name>sType</name></member> - <member noautovalidity="true">const <type>void</type>* <name>pNext</name></member> + <member>const <type>void</type>* <name>pNext</name></member> <member optional="true"><type>VkAttachmentDescriptionFlags</type> <name>flags</name></member> <member><type>VkFormat</type> <name>format</name></member> <member><type>VkSampleCountFlagBits</type> <name>samples</name></member> @@ -3360,7 +3360,7 @@ typedef void <name>CAMetalLayer</name>; <type category="struct" name="VkAttachmentDescription2KHR" alias="VkAttachmentDescription2"/> <type category="struct" name="VkAttachmentReference2"> <member values="VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2"><type>VkStructureType</type> <name>sType</name></member> - <member noautovalidity="true">const <type>void</type>* <name>pNext</name></member> + <member>const <type>void</type>* <name>pNext</name></member> <member><type>uint32_t</type> <name>attachment</name></member> <member><type>VkImageLayout</type> <name>layout</name></member> <member noautovalidity="true"><type>VkImageAspectFlags</type> <name>aspectMask</name></member> @@ -3368,7 +3368,7 @@ typedef void <name>CAMetalLayer</name>; <type category="struct" name="VkAttachmentReference2KHR" alias="VkAttachmentReference2"/> <type category="struct" name="VkSubpassDescription2"> <member values="VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2"><type>VkStructureType</type> <name>sType</name></member> - <member noautovalidity="true">const <type>void</type>* <name>pNext</name></member> + <member>const <type>void</type>* <name>pNext</name></member> <member optional="true"><type>VkSubpassDescriptionFlags</type> <name>flags</name></member> <member><type>VkPipelineBindPoint</type> <name>pipelineBindPoint</name></member> <member><type>uint32_t</type> <name>viewMask</name></member> @@ -3384,7 +3384,7 @@ typedef void <name>CAMetalLayer</name>; <type category="struct" name="VkSubpassDescription2KHR" alias="VkSubpassDescription2"/> <type category="struct" name="VkSubpassDependency2"> <member values="VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2"><type>VkStructureType</type> <name>sType</name></member> - <member noautovalidity="true">const <type>void</type>* <name>pNext</name></member> + <member>const <type>void</type>* <name>pNext</name></member> <member><type>uint32_t</type> <name>srcSubpass</name></member> <member><type>uint32_t</type> <name>dstSubpass</name></member> <member><type>VkPipelineStageFlags</type> <name>srcStageMask</name></member> @@ -3532,7 +3532,7 @@ typedef void <name>CAMetalLayer</name>; </type> <type category="struct" name="VkPhysicalDevice8BitStorageFeatures" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo"> <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES"><type>VkStructureType</type> <name>sType</name></member> - <member noautovalidity="true"><type>void</type>* <name>pNext</name></member> + <member><type>void</type>* <name>pNext</name></member> <member><type>VkBool32</type> <name>storageBuffer8BitAccess</name><comment>8-bit integer variables supported in StorageBuffer</comment></member> <member><type>VkBool32</type> <name>uniformAndStorageBuffer8BitAccess</name><comment>8-bit integer variables supported in StorageBuffer and Uniform</comment></member> <member><type>VkBool32</type> <name>storagePushConstant8</name><comment>8-bit integer variables supported in PushConstant</comment></member> @@ -3540,13 +3540,13 @@ typedef void <name>CAMetalLayer</name>; <type category="struct" name="VkPhysicalDevice8BitStorageFeaturesKHR" alias="VkPhysicalDevice8BitStorageFeatures"/> <type category="struct" name="VkPhysicalDeviceConditionalRenderingFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo"> <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member> - <member noautovalidity="true"><type>void</type>* <name>pNext</name></member> + <member><type>void</type>* <name>pNext</name></member> <member><type>VkBool32</type> <name>conditionalRendering</name></member> <member><type>VkBool32</type> <name>inheritedConditionalRendering</name></member> </type> <type category="struct" name="VkPhysicalDeviceVulkanMemoryModelFeatures" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo"> <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES"><type>VkStructureType</type> <name>sType</name></member> - <member noautovalidity="true"><type>void</type>* <name>pNext</name></member> + <member><type>void</type>* <name>pNext</name></member> <member><type>VkBool32</type> <name>vulkanMemoryModel</name></member> <member><type>VkBool32</type> <name>vulkanMemoryModelDeviceScope</name></member> <member><type>VkBool32</type> <name>vulkanMemoryModelAvailabilityVisibilityChains</name></member> @@ -3577,7 +3577,7 @@ typedef void <name>CAMetalLayer</name>; </type> <type category="struct" name="VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo"> <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member> - <member noautovalidity="true"><type>void</type>* <name>pNext</name></member> + <member><type>void</type>* <name>pNext</name></member> <member><type>VkBool32</type> <name>vertexAttributeInstanceRateDivisor</name></member> <member><type>VkBool32</type> <name>vertexAttributeInstanceRateZeroDivisor</name></member> </type> @@ -3616,7 +3616,7 @@ typedef void <name>CAMetalLayer</name>; </type> <type category="struct" name="VkPhysicalDeviceASTCDecodeFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo"> <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member> - <member noautovalidity="true"><type>void</type>* <name>pNext</name></member> + <member><type>void</type>* <name>pNext</name></member> <member><type>VkBool32</type> <name>decodeModeSharedExponent</name></member> </type> <type category="struct" name="VkPhysicalDeviceTransformFeedbackFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo"> @@ -3647,7 +3647,7 @@ typedef void <name>CAMetalLayer</name>; </type> <type category="struct" name="VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo"> <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV"><type>VkStructureType</type><name>sType</name></member> - <member noautovalidity="true"><type>void</type>* <name>pNext</name></member> + <member><type>void</type>* <name>pNext</name></member> <member><type>VkBool32</type> <name>representativeFragmentTest</name></member> </type> <type category="struct" name="VkPipelineRepresentativeFragmentTestStateCreateInfoNV" structextends="VkGraphicsPipelineCreateInfo"> @@ -4046,13 +4046,13 @@ typedef void <name>CAMetalLayer</name>; </type> <type category="struct" name="VkPhysicalDeviceMemoryBudgetPropertiesEXT" structextends="VkPhysicalDeviceMemoryProperties2" returnedonly="true"> <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT"><type>VkStructureType</type> <name>sType</name></member> - <member noautovalidity="true"><type>void</type>* <name>pNext</name></member> + <member><type>void</type>* <name>pNext</name></member> <member><type>VkDeviceSize</type> <name>heapBudget</name>[<enum>VK_MAX_MEMORY_HEAPS</enum>]</member> <member><type>VkDeviceSize</type> <name>heapUsage</name>[<enum>VK_MAX_MEMORY_HEAPS</enum>]</member> </type> <type category="struct" name="VkPhysicalDeviceMemoryPriorityFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo"> <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member> - <member noautovalidity="true"><type>void</type>* <name>pNext</name></member> + <member><type>void</type>* <name>pNext</name></member> <member><type>VkBool32</type> <name>memoryPriority</name></member> </type> <type category="struct" name="VkMemoryPriorityAllocateInfoEXT" structextends="VkMemoryAllocateInfo"> @@ -4062,7 +4062,7 @@ typedef void <name>CAMetalLayer</name>; </type> <type category="struct" name="VkPhysicalDeviceBufferDeviceAddressFeatures" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo"> <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES"><type>VkStructureType</type> <name>sType</name></member> - <member noautovalidity="true"><type>void</type>* <name>pNext</name></member> + <member><type>void</type>* <name>pNext</name></member> <member><type>VkBool32</type> <name>bufferDeviceAddress</name></member> <member><type>VkBool32</type> <name>bufferDeviceAddressCaptureReplay</name></member> <member><type>VkBool32</type> <name>bufferDeviceAddressMultiDevice</name></member> @@ -4070,7 +4070,7 @@ typedef void <name>CAMetalLayer</name>; <type category="struct" name="VkPhysicalDeviceBufferDeviceAddressFeaturesKHR" alias="VkPhysicalDeviceBufferDeviceAddressFeatures"/> <type category="struct" name="VkPhysicalDeviceBufferDeviceAddressFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo"> <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member> - <member noautovalidity="true"><type>void</type>* <name>pNext</name></member> + <member><type>void</type>* <name>pNext</name></member> <member><type>VkBool32</type> <name>bufferDeviceAddress</name></member> <member><type>VkBool32</type> <name>bufferDeviceAddressCaptureReplay</name></member> <member><type>VkBool32</type> <name>bufferDeviceAddressMultiDevice</name></member> @@ -4167,7 +4167,7 @@ typedef void <name>CAMetalLayer</name>; </type> <type category="struct" name="VkPhysicalDeviceYcbcrImageArraysFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo"> <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member> - <member noautovalidity="true"><type>void</type>* <name>pNext</name></member> + <member><type>void</type>* <name>pNext</name></member> <member><type>VkBool32</type> <name>ycbcrImageArrays</name></member> </type> <type category="struct" name="VkImageViewHandleInfoNVX"> @@ -4216,7 +4216,7 @@ typedef void <name>CAMetalLayer</name>; </type> <type category="struct" name="VkPhysicalDevicePerformanceQueryFeaturesKHR" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo"> <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR"><type>VkStructureType</type> <name>sType</name></member> - <member noautovalidity="true"><type>void</type>* <name>pNext</name></member> + <member><type>void</type>* <name>pNext</name></member> <member><type>VkBool32</type> <name>performanceCounterQueryPools</name><comment>performance counters supported in query pools</comment></member> <member><type>VkBool32</type> <name>performanceCounterMultipleQueryPools</name><comment>performance counters from multiple query pools can be accessed in the same primary command buffer</comment></member> </type> <type category="struct" name="VkPhysicalDevicePerformanceQueryPropertiesKHR" returnedonly="true" structextends="VkPhysicalDeviceProperties2"> @@ -4273,7 +4273,7 @@ typedef void <name>CAMetalLayer</name>; </type> <type category="struct" name="VkPhysicalDeviceCoverageReductionModeFeaturesNV" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo"> <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV"><type>VkStructureType</type><name>sType</name></member> - <member noautovalidity="true"><type>void</type>* <name>pNext</name></member> + <member><type>void</type>* <name>pNext</name></member> <member><type>VkBool32</type> <name>coverageReductionMode</name></member> </type> <type category="struct" name="VkPipelineCoverageReductionStateCreateInfoNV" structextends="VkPipelineMultisampleStateCreateInfo"> @@ -4347,7 +4347,7 @@ typedef void <name>CAMetalLayer</name>; </type> <type category="struct" name="VkPhysicalDeviceIndexTypeUint8FeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo"> <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member> - <member noautovalidity="true"><type>void</type>* <name>pNext</name></member> + <member><type>void</type>* <name>pNext</name></member> <member><type>VkBool32</type> <name>indexTypeUint8</name></member> </type> <type category="struct" name="VkPhysicalDeviceShaderSMBuiltinsPropertiesNV" returnedonly="true" structextends="VkPhysicalDeviceProperties2"> @@ -4358,7 +4358,7 @@ typedef void <name>CAMetalLayer</name>; </type> <type category="struct" name="VkPhysicalDeviceShaderSMBuiltinsFeaturesNV" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo"> <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV"><type>VkStructureType</type><name>sType</name></member> - <member noautovalidity="true"><type>void</type>* <name>pNext</name></member> + <member><type>void</type>* <name>pNext</name></member> <member><type>VkBool32</type> <name>shaderSMBuiltins</name></member> </type> <type category="struct" name="VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo"> @@ -4370,19 +4370,19 @@ typedef void <name>CAMetalLayer</name>; </type> <type category="struct" name="VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo"> <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES"><type>VkStructureType</type><name>sType</name></member> - <member noautovalidity="true"><type>void</type>* <name>pNext</name></member> + <member><type>void</type>* <name>pNext</name></member> <member><type>VkBool32</type> <name>separateDepthStencilLayouts</name></member> </type> <type category="struct" name="VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR" alias="VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures"/> <type category="struct" name="VkAttachmentReferenceStencilLayout" structextends="VkAttachmentReference2"> <member values="VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT"><type>VkStructureType</type><name>sType</name></member> - <member noautovalidity="true"><type>void</type>* <name>pNext</name></member> + <member><type>void</type>* <name>pNext</name></member> <member><type>VkImageLayout</type> <name>stencilLayout</name></member> </type> <type category="struct" name="VkAttachmentReferenceStencilLayoutKHR" alias="VkAttachmentReferenceStencilLayout"/> <type category="struct" name="VkAttachmentDescriptionStencilLayout" structextends="VkAttachmentDescription2"> <member values="VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT"><type>VkStructureType</type><name>sType</name></member> - <member noautovalidity="true"><type>void</type>* <name>pNext</name></member> + <member><type>void</type>* <name>pNext</name></member> <member><type>VkImageLayout</type> <name>stencilInitialLayout</name></member> <member><type>VkImageLayout</type> <name>stencilFinalLayout</name></member> </type> @@ -4436,17 +4436,17 @@ typedef void <name>CAMetalLayer</name>; </type> <type category="struct" name="VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo"> <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member> - <member noautovalidity="true"><type>void</type>* <name>pNext</name></member> + <member><type>void</type>* <name>pNext</name></member> <member><type>VkBool32</type> <name>shaderDemoteToHelperInvocation</name></member> </type> <type category="struct" name="VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo"> <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member> - <member noautovalidity="true"><type>void</type>* <name>pNext</name></member> + <member><type>void</type>* <name>pNext</name></member> <member><type>VkBool32</type> <name>texelBufferAlignment</name></member> </type> <type category="struct" name="VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT" structextends="VkPhysicalDeviceProperties2" returnedonly="true"> <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT"><type>VkStructureType</type> <name>sType</name></member> - <member noautovalidity="true"><type>void</type>* <name>pNext</name></member> + <member><type>void</type>* <name>pNext</name></member> <member><type>VkDeviceSize</type> <name>storageTexelBufferOffsetAlignmentBytes</name></member> <member><type>VkBool32</type> <name>storageTexelBufferOffsetSingleTexelAlignment</name></member> <member><type>VkDeviceSize</type> <name>uniformTexelBufferOffsetAlignmentBytes</name></member> @@ -4485,7 +4485,7 @@ typedef void <name>CAMetalLayer</name>; <type category="struct" name="VkDeviceMemoryOpaqueCaptureAddressInfoKHR" alias="VkDeviceMemoryOpaqueCaptureAddressInfo"/> <type category="struct" name="VkPhysicalDeviceLineRasterizationFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo"> <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member> - <member noautovalidity="true"><type>void</type>* <name>pNext</name></member> + <member><type>void</type>* <name>pNext</name></member> <member><type>VkBool32</type> <name>rectangularLines</name></member> <member><type>VkBool32</type> <name>bresenhamLines</name></member> <member><type>VkBool32</type> <name>smoothLines</name></member> @@ -4508,12 +4508,12 @@ typedef void <name>CAMetalLayer</name>; </type> <type category="struct" name="VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo"> <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member> - <member noautovalidity="true"><type>void</type>* <name>pNext</name></member> + <member><type>void</type>* <name>pNext</name></member> <member><type>VkBool32</type> <name>pipelineCreationCacheControl</name></member> </type> <type category="struct" name="VkPhysicalDeviceVulkan11Features" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo"> <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES"><type>VkStructureType</type><name>sType</name></member> - <member noautovalidity="true"><type>void</type>* <name>pNext</name></member> + <member><type>void</type>* <name>pNext</name></member> <member><type>VkBool32</type> <name>storageBuffer16BitAccess</name><comment>16-bit integer/floating-point variables supported in BufferBlock</comment></member> <member><type>VkBool32</type> <name>uniformAndStorageBuffer16BitAccess</name><comment>16-bit integer/floating-point variables supported in BufferBlock and Block</comment></member> <member><type>VkBool32</type> <name>storagePushConstant16</name><comment>16-bit integer/floating-point variables supported in PushConstant</comment></member> @@ -4529,7 +4529,7 @@ typedef void <name>CAMetalLayer</name>; </type> <type category="struct" name="VkPhysicalDeviceVulkan11Properties" returnedonly="true" structextends="VkPhysicalDeviceProperties2"> <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES"><type>VkStructureType</type><name>sType</name></member> - <member noautovalidity="true"><type>void</type>* <name>pNext</name></member> + <member><type>void</type>* <name>pNext</name></member> <member><type>uint8_t</type> <name>deviceUUID</name>[<enum>VK_UUID_SIZE</enum>]</member> <member><type>uint8_t</type> <name>driverUUID</name>[<enum>VK_UUID_SIZE</enum>]</member> <member><type>uint8_t</type> <name>deviceLUID</name>[<enum>VK_LUID_SIZE</enum>]</member> @@ -4548,7 +4548,7 @@ typedef void <name>CAMetalLayer</name>; </type> <type category="struct" name="VkPhysicalDeviceVulkan12Features" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo"> <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES"><type>VkStructureType</type><name>sType</name></member> - <member noautovalidity="true"><type>void</type>* <name>pNext</name></member> + <member><type>void</type>* <name>pNext</name></member> <member><type>VkBool32</type> <name>samplerMirrorClampToEdge</name></member> <member><type>VkBool32</type> <name>drawIndirectCount</name></member> <member><type>VkBool32</type> <name>storageBuffer8BitAccess</name><comment>8-bit integer variables supported in StorageBuffer</comment></member> @@ -4599,7 +4599,7 @@ typedef void <name>CAMetalLayer</name>; </type> <type category="struct" name="VkPhysicalDeviceVulkan12Properties" returnedonly="true" structextends="VkPhysicalDeviceProperties2"> <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES"><type>VkStructureType</type><name>sType</name></member> - <member noautovalidity="true"><type>void</type>* <name>pNext</name></member> + <member><type>void</type>* <name>pNext</name></member> <member><type>VkDriverId</type> <name>driverID</name></member> <member><type>char</type> <name>driverName</name>[<enum>VK_MAX_DRIVER_NAME_SIZE</enum>]</member> <member><type>char</type> <name>driverInfo</name>[<enum>VK_MAX_DRIVER_INFO_SIZE</enum>]</member> @@ -4660,7 +4660,7 @@ typedef void <name>CAMetalLayer</name>; </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>void</type>* <name>pNext</name></member> <member><type>VkBool32</type> <name>deviceCoherentMemory</name></member> </type> <type category="struct" name="VkPhysicalDeviceToolPropertiesEXT" returnedonly="true"> @@ -4680,12 +4680,12 @@ typedef void <name>CAMetalLayer</name>; </type> <type category="struct" name="VkPhysicalDeviceCustomBorderColorPropertiesEXT" structextends="VkPhysicalDeviceProperties2" returnedonly="true"> <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT"><type>VkStructureType</type> <name>sType</name></member> - <member noautovalidity="true"><type>void</type>* <name>pNext</name></member> + <member><type>void</type>* <name>pNext</name></member> <member><type>uint32_t</type> <name>maxCustomBorderColorSamplers</name></member> </type> <type category="struct" name="VkPhysicalDeviceCustomBorderColorFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo"> <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member> - <member noautovalidity="true"><type>void</type>* <name>pNext</name></member> + <member><type>void</type>* <name>pNext</name></member> <member><type>VkBool32</type> <name>customBorderColors</name></member> <member><type>VkBool32</type> <name>customBorderColorWithoutFormat</name></member> </type> @@ -4844,7 +4844,7 @@ typedef void <name>CAMetalLayer</name>; </type> <type category="struct" name="VkPhysicalDeviceExtendedDynamicStateFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo"> <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member> - <member noautovalidity="true"><type>void</type>* <name>pNext</name></member> + <member><type>void</type>* <name>pNext</name></member> <member><type>VkBool32</type> <name>extendedDynamicState</name></member> </type> <type category="struct" name="VkRenderPassTransformBeginInfoQCOM" structextends="VkRenderPassBeginInfo"> @@ -4852,6 +4852,11 @@ typedef void <name>CAMetalLayer</name>; <member><type>void</type>* <name>pNext</name><comment>Pointer to next structure</comment></member> <member noautovalidity="true"><type>VkSurfaceTransformFlagBitsKHR</type> <name>transform</name></member> </type> + <type category="struct" name="VkCopyCommandTransformInfoQCOM" structextends="VkBufferImageCopy2KHR,VkImageBlit2KHR"> + <member values="VK_STRUCTURE_TYPE_COPY_COMMAND_TRANSFORM_INFO_QCOM"><type>VkStructureType</type> <name>sType</name></member> + <member noautovalidity="true">const <type>void</type>* <name>pNext</name></member> + <member noautovalidity="true"><type>VkSurfaceTransformFlagBitsKHR</type> <name>transform</name></member> + </type> <type category="struct" name="VkCommandBufferInheritanceRenderPassTransformInfoQCOM" structextends="VkCommandBufferInheritanceInfo"> <member values="VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM"><type>VkStructureType</type> <name>sType</name></member> <member><type>void</type>* <name>pNext</name><comment>Pointer to next structure</comment></member> @@ -4860,7 +4865,7 @@ typedef void <name>CAMetalLayer</name>; </type> <type category="struct" name="VkPhysicalDeviceDiagnosticsConfigFeaturesNV" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo"> <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV"><type>VkStructureType</type><name>sType</name></member> - <member noautovalidity="true"><type>void</type>* <name>pNext</name></member> + <member><type>void</type>* <name>pNext</name></member> <member><type>VkBool32</type> <name>diagnosticsConfig</name></member> </type> <type category="struct" name="VkDeviceDiagnosticsConfigCreateInfoNV" structextends="VkDeviceCreateInfo"> @@ -4870,25 +4875,25 @@ typedef void <name>CAMetalLayer</name>; </type> <type category="struct" name="VkPhysicalDeviceRobustness2FeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo"> <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member> - <member noautovalidity="true"><type>void</type>* <name>pNext</name></member> + <member><type>void</type>* <name>pNext</name></member> <member><type>VkBool32</type> <name>robustBufferAccess2</name></member> <member><type>VkBool32</type> <name>robustImageAccess2</name></member> <member><type>VkBool32</type> <name>nullDescriptor</name></member> </type> <type category="struct" name="VkPhysicalDeviceRobustness2PropertiesEXT" returnedonly="true" structextends="VkPhysicalDeviceProperties2"> <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT"><type>VkStructureType</type> <name>sType</name></member> - <member noautovalidity="true"><type>void</type>* <name>pNext</name></member> + <member><type>void</type>* <name>pNext</name></member> <member><type>VkDeviceSize</type> <name>robustStorageBufferAccessSizeAlignment</name></member> <member><type>VkDeviceSize</type> <name>robustUniformBufferAccessSizeAlignment</name></member> </type> <type category="struct" name="VkPhysicalDeviceImageRobustnessFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo"> <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member> - <member noautovalidity="true"><type>void</type>* <name>pNext</name></member> + <member><type>void</type>* <name>pNext</name></member> <member><type>VkBool32</type> <name>robustImageAccess</name></member> </type> <type category="struct" name="VkPhysicalDevicePortabilitySubsetFeaturesKHR" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo"> <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_FEATURES_KHR"><type>VkStructureType</type> <name>sType</name></member> - <member noautovalidity="true"><type>void</type>* <name>pNext</name></member> + <member><type>void</type>* <name>pNext</name></member> <member><type>VkBool32</type> <name>constantAlphaColorBlendFactors</name></member> <member><type>VkBool32</type> <name>events</name></member> <member><type>VkBool32</type> <name>imageViewFormatReinterpretation</name></member> @@ -4907,12 +4912,12 @@ typedef void <name>CAMetalLayer</name>; </type> <type category="struct" name="VkPhysicalDevicePortabilitySubsetPropertiesKHR" structextends="VkPhysicalDeviceProperties2"> <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_PROPERTIES_KHR"><type>VkStructureType</type> <name>sType</name></member> - <member noautovalidity="true"><type>void</type>* <name>pNext</name></member> + <member><type>void</type>* <name>pNext</name></member> <member><type>uint32_t</type> <name>minVertexInputBindingStrideAlignment</name></member> </type> <type category="struct" name="VkPhysicalDevice4444FormatsFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo"> <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member> - <member noautovalidity="true"><type>void</type>* <name>pNext</name></member> + <member><type>void</type>* <name>pNext</name></member> <member><type>VkBool32</type> <name>formatA4R4G4B4</name></member> <member><type>VkBool32</type> <name>formatA4B4G4R4</name></member> </type> @@ -6078,7 +6083,8 @@ typedef void <name>CAMetalLayer</name>; <enum bitpos="0" name="VK_FENCE_IMPORT_TEMPORARY_BIT"/> </enums> <enums name="VkSurfaceCounterFlagBitsEXT" type="bitmask"> - <enum bitpos="0" name="VK_SURFACE_COUNTER_VBLANK_EXT"/> + <enum bitpos="0" name="VK_SURFACE_COUNTER_VBLANK_BIT_EXT"/> + <enum name="VK_SURFACE_COUNTER_VBLANK_EXT" alias="VK_SURFACE_COUNTER_VBLANK_BIT_EXT" comment="Backwards-compatible alias containing a typo"/> </enums> <enums name="VkDisplayPowerStateEXT" type="enum"> <enum value="0" name="VK_DISPLAY_POWER_STATE_OFF_EXT"/> @@ -6381,8 +6387,10 @@ typedef void <name>CAMetalLayer</name>; <enum value="5" name="VK_PERFORMANCE_COUNTER_STORAGE_FLOAT64_KHR"/> </enums> <enums name="VkPerformanceCounterDescriptionFlagBitsKHR" type="bitmask"> - <enum bitpos="0" name="VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_KHR"/> - <enum bitpos="1" name="VK_PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_KHR"/> + <enum bitpos="0" name="VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_BIT_KHR"/> + <enum name="VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_KHR" alias="VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_BIT_KHR" comment="Backwards-compatible alias containing a typo"/> + <enum bitpos="1" name="VK_PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_BIT_KHR"/> + <enum name="VK_PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_KHR" alias="VK_PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_BIT_KHR" comment="Backwards-compatible alias containing a typo"/> </enums> <enums name="VkAcquireProfilingLockFlagBitsKHR" type="bitmask"> </enums> @@ -14106,10 +14114,12 @@ typedef void <name>CAMetalLayer</name>; <type name="VkPhysicalDeviceFragmentDensityMap2PropertiesEXT"/> </require> </extension> - <extension name="VK_EXT_extension_334" number="334" author="EXT" contact="Jeff Leger @jackohound" supported="disabled"> + <extension name="VK_QCOM_rotated_copy_commands" number="334" type="device" requires="VK_KHR_swapchain,VK_KHR_copy_commands2" author="QCOM" contact="Jeff Leger @jackohound" supported="vulkan"> <require> - <enum value="0" name="VK_EXT_EXTENSION_334_SPEC_VERSION"/> - <enum value=""VK_EXT_extension_334"" name="VK_EXT_EXTENSION_334_EXTENSION_NAME"/> + <enum value="0" name="VK_QCOM_rotated_copy_commands_SPEC_VERSION"/> + <enum value=""VK_QCOM_rotated_copy_commands"" name="VK_QCOM_rotated_copy_commands_EXTENSION_NAME"/> + <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_COPY_COMMAND_TRANSFORM_INFO_QCOM"/> + <type name="VkCopyCommandTransformInfoQCOM"/> </require> </extension> <extension name="VK_KHR_extension_335" number="335" author="KHR" contact="Mark Bellamy @mark.bellamy_arm" supported="disabled"> @@ -14321,4 +14331,548 @@ typedef void <name>CAMetalLayer</name>; </require> </extension> </extensions> + <spirvextensions comment="SPIR-V Extensions allowed in Vulkan and what is required to use it"> + <spirvextension name="SPV_KHR_variable_pointers"> + <enable version="VK_API_VERSION_1_1"/> + <enable extension="VK_KHR_variable_pointers"/> + </spirvextension> + <spirvextension name="SPV_AMD_shader_explicit_vertex_parameter"> + <enable extension="VK_AMD_shader_explicit_vertex_parameter"/> + </spirvextension> + <spirvextension name="SPV_AMD_gcn_shader"> + <enable extension="VK_AMD_gcn_shader"/> + </spirvextension> + <spirvextension name="SPV_AMD_gpu_shader_half_float"> + <enable extension="VK_AMD_gpu_shader_half_float"/> + </spirvextension> + <spirvextension name="SPV_AMD_gpu_shader_int16"> + <enable extension="VK_AMD_gpu_shader_int16"/> + </spirvextension> + <spirvextension name="SPV_AMD_shader_ballot"> + <enable extension="VK_AMD_shader_ballot"/> + </spirvextension> + <spirvextension name="SPV_AMD_shader_fragment_mask"> + <enable extension="VK_AMD_shader_fragment_mask"/> + </spirvextension> + <spirvextension name="SPV_AMD_shader_image_load_store_lod"> + <enable extension="VK_AMD_shader_image_load_store_lod"/> + </spirvextension> + <spirvextension name="SPV_AMD_shader_trinary_minmax"> + <enable extension="VK_AMD_shader_trinary_minmax"/> + </spirvextension> + <spirvextension name="SPV_AMD_texture_gather_bias_lod"> + <enable extension="VK_AMD_texture_gather_bias_lod"/> + </spirvextension> + <spirvextension name="SPV_KHR_shader_draw_parameters"> + <enable version="VK_API_VERSION_1_1"/> + <enable extension="VK_KHR_shader_draw_parameters"/> + </spirvextension> + <spirvextension name="SPV_KHR_8bit_storage"> + <enable version="VK_API_VERSION_1_2"/> + <enable extension="VK_KHR_8bit_storage"/> + </spirvextension> + <spirvextension name="SPV_KHR_16bit_storage"> + <enable version="VK_API_VERSION_1_1"/> + <enable extension="VK_KHR_16bit_storage"/> + </spirvextension> + <spirvextension name="SPV_KHR_shader_clock"> + <enable extension="VK_KHR_shader_clock"/> + </spirvextension> + <spirvextension name="SPV_KHR_float_controls"> + <enable version="VK_API_VERSION_1_2"/> + <enable extension="VK_KHR_shader_float_controls"/> + </spirvextension> + <spirvextension name="SPV_KHR_storage_buffer_storage_class"> + <enable version="VK_API_VERSION_1_1"/> + <enable extension="VK_KHR_storage_buffer_storage_class"/> + </spirvextension> + <spirvextension name="SPV_KHR_post_depth_coverage"> + <enable extension="VK_EXT_post_depth_coverage"/> + </spirvextension> + <spirvextension name="SPV_EXT_shader_stencil_export"> + <enable extension="VK_EXT_shader_stencil_export"/> + </spirvextension> + <spirvextension name="SPV_KHR_shader_ballot"> + <enable extension="VK_EXT_shader_subgroup_ballot"/> + </spirvextension> + <spirvextension name="SPV_KHR_subgroup_vote"> + <enable extension="VK_EXT_shader_subgroup_vote"/> + </spirvextension> + <spirvextension name="SPV_NV_sample_mask_override_coverage"> + <enable extension="VK_NV_sample_mask_override_coverage"/> + </spirvextension> + <spirvextension name="SPV_NV_geometry_shader_passthrough"> + <enable extension="VK_NV_geometry_shader_passthrough"/> + </spirvextension> + <spirvextension name="SPV_NV_mesh_shader"> + <enable extension="VK_NV_mesh_shader"/> + </spirvextension> + <spirvextension name="SPV_NV_viewport_array2"> + <enable extension="VK_NV_viewport_array2"/> + </spirvextension> + <spirvextension name="SPV_NV_shader_subgroup_partitioned"> + <enable extension="VK_NV_shader_subgroup_partitioned"/> + </spirvextension> + <spirvextension name="SPV_EXT_shader_viewport_index_layer"> + <enable version="VK_API_VERSION_1_2"/> + <enable extension="VK_EXT_shader_viewport_index_layer"/> + </spirvextension> + <spirvextension name="SPV_NVX_multiview_per_view_attributes"> + <enable extension="VK_NVX_multiview_per_view_attributes"/> + </spirvextension> + <spirvextension name="SPV_EXT_descriptor_indexing"> + <enable version="VK_API_VERSION_1_2"/> + <enable extension="VK_EXT_descriptor_indexing"/> + </spirvextension> + <spirvextension name="SPV_KHR_vulkan_memory_model"> + <enable version="VK_API_VERSION_1_2"/> + <enable extension="VK_KHR_vulkan_memory_model"/> + </spirvextension> + <spirvextension name="SPV_NV_compute_shader_derivatives"> + <enable extension="VK_NV_compute_shader_derivatives"/> + </spirvextension> + <spirvextension name="SPV_NV_fragment_shader_barycentric"> + <enable extension="VK_NV_fragment_shader_barycentric"/> + </spirvextension> + <spirvextension name="SPV_NV_shader_image_footprint"> + <enable extension="VK_NV_shader_image_footprint"/> + </spirvextension> + <spirvextension name="SPV_NV_shading_rate"> + <enable extension="VK_NV_shading_rate_image"/> + </spirvextension> + <spirvextension name="SPV_NV_ray_tracing"> + <enable extension="VK_NV_ray_tracing"/> + </spirvextension> + <spirvextension name="SPV_KHR_ray_tracing"> + <enable extension="VK_KHR_ray_tracing"/> + </spirvextension> + <spirvextension name="SPV_KHR_ray_query"> + <enable extension="VK_KHR_ray_tracing"/> + </spirvextension> + <spirvextension name="SPV_GOOGLE_hlsl_functionality1"> + <enable extension="VK_GOOGLE_hlsl_functionality1"/> + </spirvextension> + <spirvextension name="SPV_GOOGLE_user_type"> + <enable extension="VK_GOOGLE_user_type"/> + </spirvextension> + <spirvextension name="SPV_GOOGLE_decorate_string"> + <enable extension="VK_GOOGLE_decorate_string"/> + </spirvextension> + <spirvextension name="SPV_EXT_fragment_invocation_density"> + <enable extension="VK_EXT_fragment_density_map"/> + </spirvextension> + <spirvextension name="SPV_KHR_physical_storage_buffer"> + <enable version="VK_API_VERSION_1_2"/> + <enable extension="VK_KHR_buffer_device_address"/> + </spirvextension> + <spirvextension name="SPV_EXT_physical_storage_buffer"> + <enable extension="VK_EXT_buffer_device_address"/> + </spirvextension> + <spirvextension name="SPV_NV_cooperative_matrix"> + <enable extension="VK_NV_cooperative_matrix"/> + </spirvextension> + <spirvextension name="SPV_NV_shader_sm_builtins"> + <enable extension="VK_NV_shader_sm_builtins"/> + </spirvextension> + <spirvextension name="SPV_EXT_fragment_shader_interlock"> + <enable extension="VK_EXT_fragment_shader_interlock"/> + </spirvextension> + <spirvextension name="SPV_EXT_demote_to_helper_invocation"> + <enable extension="VK_EXT_shader_demote_to_helper_invocation"/> + </spirvextension> + <spirvextension name="SPV_KHR_fragment_shading_rate"> + <enable extension="VK_KHR_fragment_shading_rate"/> + </spirvextension> + <spirvextension name="SPV_KHR_non_semantic_info"> + <enable extension="VK_KHR_shader_non_semantic_info"/> + </spirvextension> + <spirvextension name="SPV_EXT_shader_image_int64"> + <enable extension="VK_EXT_shader_image_atomic_int64"/> + </spirvextension> + <spirvextension name="SPV_KHR_terminate_invocation"> + <enable extension="VK_KHR_shader_terminate_invocation"/> + </spirvextension> + </spirvextensions> + <spirvcapabilities comment="SPIR-V Capabilities allowed in Vulkan and what is required to use it"> + <spirvcapability name="Matrix"> + <enable version="VK_API_VERSION_1_0"/> + </spirvcapability> + <spirvcapability name="Shader"> + <enable version="VK_API_VERSION_1_0"/> + </spirvcapability> + <spirvcapability name="InputAttachment"> + <enable version="VK_API_VERSION_1_0"/> + </spirvcapability> + <spirvcapability name="Sampled1D"> + <enable version="VK_API_VERSION_1_0"/> + </spirvcapability> + <spirvcapability name="Image1D"> + <enable version="VK_API_VERSION_1_0"/> + </spirvcapability> + <spirvcapability name="SampledBuffer"> + <enable version="VK_API_VERSION_1_0"/> + </spirvcapability> + <spirvcapability name="ImageBuffer"> + <enable version="VK_API_VERSION_1_0"/> + </spirvcapability> + <spirvcapability name="ImageQuery"> + <enable version="VK_API_VERSION_1_0"/> + </spirvcapability> + <spirvcapability name="DerivativeControl"> + <enable version="VK_API_VERSION_1_0"/> + </spirvcapability> + <spirvcapability name="Geometry"> + <enable struct="VkPhysicalDeviceFeatures" feature="geometryShader"/> + </spirvcapability> + <spirvcapability name="Tessellation"> + <enable struct="VkPhysicalDeviceFeatures" feature="tessellationShader"/> + </spirvcapability> + <spirvcapability name="Float64"> + <enable struct="VkPhysicalDeviceFeatures" feature="shaderFloat64"/> + </spirvcapability> + <spirvcapability name="Int64"> + <enable struct="VkPhysicalDeviceFeatures" feature="shaderInt64"/> + </spirvcapability> + <spirvcapability name="Int64Atomics"> + <enable struct="VkPhysicalDeviceVulkan12Features" feature="shaderBufferInt64Atomics" requires="VK_VERSION_1_2,VK_KHR_shader_atomic_int64"/> + <enable struct="VkPhysicalDeviceVulkan12Features" feature="shaderSharedInt64Atomics" requires="VK_VERSION_1_2,VK_KHR_shader_atomic_int64"/> + </spirvcapability> + <spirvcapability name="AtomicFloat32AddEXT"> + <enable struct="VkPhysicalDeviceShaderAtomicFloatFeaturesEXT" feature="shaderBufferFloat32AtomicAdd" requires="VK_EXT_shader_atomic_float"/> + <enable struct="VkPhysicalDeviceShaderAtomicFloatFeaturesEXT" feature="shaderSharedFloat32AtomicAdd" requires="VK_EXT_shader_atomic_float"/> + <enable struct="VkPhysicalDeviceShaderAtomicFloatFeaturesEXT" feature="shaderImageFloat32AtomicAdd" requires="VK_EXT_shader_atomic_float"/> + <enable struct="VkPhysicalDeviceShaderAtomicFloatFeaturesEXT" feature="sparseImageFloat32AtomicAdd" requires="VK_EXT_shader_atomic_float"/> + </spirvcapability> + <spirvcapability name="AtomicFloat64AddEXT"> + <enable struct="VkPhysicalDeviceShaderAtomicFloatFeaturesEXT" feature="shaderBufferFloat64AtomicAdd" requires="VK_EXT_shader_atomic_float"/> + <enable struct="VkPhysicalDeviceShaderAtomicFloatFeaturesEXT" feature="shaderSharedFloat64AtomicAdd" requires="VK_EXT_shader_atomic_float"/> + </spirvcapability> + <spirvcapability name="Int64ImageEXT"> + <enable struct="VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT" feature="shaderImageInt64Atomics" requires="VK_EXT_shader_image_atomic_int64"/> + </spirvcapability> + <spirvcapability name="Int16"> + <enable struct="VkPhysicalDeviceFeatures" feature="shaderInt16"/> + </spirvcapability> + <spirvcapability name="TessellationPointSize"> + <enable struct="VkPhysicalDeviceFeatures" feature="shaderTessellationAndGeometryPointSize"/> + </spirvcapability> + <spirvcapability name="GeometryPointSize"> + <enable struct="VkPhysicalDeviceFeatures" feature="shaderTessellationAndGeometryPointSize"/> + </spirvcapability> + <spirvcapability name="ImageGatherExtended"> + <enable struct="VkPhysicalDeviceFeatures" feature="shaderImageGatherExtended"/> + </spirvcapability> + <spirvcapability name="StorageImageMultisample"> + <enable struct="VkPhysicalDeviceFeatures" feature="shaderStorageImageMultisample"/> + </spirvcapability> + <spirvcapability name="UniformBufferArrayDynamicIndexing"> + <enable struct="VkPhysicalDeviceFeatures" feature="shaderUniformBufferArrayDynamicIndexing"/> + </spirvcapability> + <spirvcapability name="SampledImageArrayDynamicIndexing"> + <enable struct="VkPhysicalDeviceFeatures" feature="shaderSampledImageArrayDynamicIndexing"/> + </spirvcapability> + <spirvcapability name="StorageBufferArrayDynamicIndexing"> + <enable struct="VkPhysicalDeviceFeatures" feature="shaderStorageBufferArrayDynamicIndexing"/> + </spirvcapability> + <spirvcapability name="StorageImageArrayDynamicIndexing"> + <enable struct="VkPhysicalDeviceFeatures" feature="shaderStorageImageArrayDynamicIndexing"/> + </spirvcapability> + <spirvcapability name="ClipDistance"> + <enable struct="VkPhysicalDeviceFeatures" feature="shaderClipDistance"/> + </spirvcapability> + <spirvcapability name="CullDistance"> + <enable struct="VkPhysicalDeviceFeatures" feature="shaderCullDistance"/> + </spirvcapability> + <spirvcapability name="ImageCubeArray"> + <enable struct="VkPhysicalDeviceFeatures" feature="imageCubeArray"/> + </spirvcapability> + <spirvcapability name="SampleRateShading"> + <enable struct="VkPhysicalDeviceFeatures" feature="sampleRateShading"/> + </spirvcapability> + <spirvcapability name="SparseResidency"> + <enable struct="VkPhysicalDeviceFeatures" feature="shaderResourceResidency"/> + </spirvcapability> + <spirvcapability name="MinLod"> + <enable struct="VkPhysicalDeviceFeatures" feature="shaderResourceMinLod"/> + </spirvcapability> + <spirvcapability name="SampledCubeArray"> + <enable struct="VkPhysicalDeviceFeatures" feature="imageCubeArray"/> + </spirvcapability> + <spirvcapability name="ImageMSArray"> + <enable struct="VkPhysicalDeviceFeatures" feature="shaderStorageImageMultisample"/> + </spirvcapability> + <spirvcapability name="StorageImageExtendedFormats"> + <enable version="VK_API_VERSION_1_0"/> + </spirvcapability> + <spirvcapability name="InterpolationFunction"> + <enable struct="VkPhysicalDeviceFeatures" feature="sampleRateShading"/> + </spirvcapability> + <spirvcapability name="StorageImageReadWithoutFormat"> + <enable struct="VkPhysicalDeviceFeatures" feature="shaderStorageImageReadWithoutFormat"/> + </spirvcapability> + <spirvcapability name="StorageImageWriteWithoutFormat"> + <enable struct="VkPhysicalDeviceFeatures" feature="shaderStorageImageWriteWithoutFormat"/> + </spirvcapability> + <spirvcapability name="MultiViewport"> + <enable struct="VkPhysicalDeviceFeatures" feature="multiViewport"/> + </spirvcapability> + <spirvcapability name="DrawParameters"> + <enable struct="VkPhysicalDeviceVulkan11Features" feature="shaderDrawParameters" requires="VK_VERSION_1_1"/> + <enable extension="VK_KHR_shader_draw_parameters"/> + </spirvcapability> + <spirvcapability name="MultiView"> + <enable struct="VkPhysicalDeviceVulkan11Features" feature="multiview" requires="VK_VERSION_1_1,VK_KHR_multiview"/> + </spirvcapability> + <spirvcapability name="DeviceGroup"> + <enable version="VK_API_VERSION_1_1"/> + <enable extension="VK_KHR_device_group"/> + </spirvcapability> + <spirvcapability name="VariablePointersStorageBuffer"> + <enable struct="VkPhysicalDeviceVulkan11Features" feature="variablePointersStorageBuffer" requires="VK_VERSION_1_1,VK_KHR_variable_pointers"/> + </spirvcapability> + <spirvcapability name="VariablePointers"> + <enable struct="VkPhysicalDeviceVulkan11Features" feature="variablePointers" requires="VK_VERSION_1_1,VK_KHR_variable_pointers"/> + </spirvcapability> + <spirvcapability name="ShaderClockKHR"> + <enable extension="VK_KHR_shader_clock"/> + </spirvcapability> + <spirvcapability name="StencilExportEXT"> + <enable extension="VK_EXT_shader_stencil_export"/> + </spirvcapability> + <spirvcapability name="SubgroupBallotKHR"> + <enable extension="VK_EXT_shader_subgroup_ballot"/> + </spirvcapability> + <spirvcapability name="SubgroupVoteKHR"> + <enable extension="VK_EXT_shader_subgroup_vote"/> + </spirvcapability> + <spirvcapability name="ImageReadWriteLodAMD"> + <enable extension="VK_AMD_shader_image_load_store_lod"/> + </spirvcapability> + <spirvcapability name="ImageGatherBiasLodAMD"> + <enable extension="VK_AMD_texture_gather_bias_lod"/> + </spirvcapability> + <spirvcapability name="FragmentMaskAMD"> + <enable extension="VK_AMD_shader_fragment_mask"/> + </spirvcapability> + <spirvcapability name="SampleMaskOverrideCoverageNV"> + <enable extension="VK_NV_sample_mask_override_coverage"/> + </spirvcapability> + <spirvcapability name="GeometryShaderPassthroughNV"> + <enable extension="VK_NV_geometry_shader_passthrough"/> + </spirvcapability> + <spirvcapability name="ShaderViewportIndex"> + <enable struct="VkPhysicalDeviceVulkan12Features" feature="shaderOutputViewportIndex" requires="VK_VERSION_1_2"/> + </spirvcapability> + <spirvcapability name="ShaderLayer"> + <enable struct="VkPhysicalDeviceVulkan12Features" feature="shaderOutputLayer" requires="VK_VERSION_1_2"/> + </spirvcapability> + <spirvcapability name="ShaderViewportIndexLayerEXT"> + <enable extension="VK_EXT_shader_viewport_index_layer"/> + </spirvcapability> + <spirvcapability name="ShaderViewportIndexLayerNV"> + <enable extension="VK_NV_viewport_array2"/> + </spirvcapability> + <spirvcapability name="ShaderViewportMaskNV"> + <enable extension="VK_NV_viewport_array2"/> + </spirvcapability> + <spirvcapability name="PerViewAttributesNV"> + <enable extension="VK_NVX_multiview_per_view_attributes"/> + </spirvcapability> + <spirvcapability name="StorageBuffer16BitAccess"> + <enable struct="VkPhysicalDeviceVulkan11Features" feature="storageBuffer16BitAccess" requires="VK_VERSION_1_1,VK_KHR_16bit_storage"/> + </spirvcapability> + <spirvcapability name="UniformAndStorageBuffer16BitAccess"> + <enable struct="VkPhysicalDeviceVulkan11Features" feature="uniformAndStorageBuffer16BitAccess" requires="VK_VERSION_1_1,VK_KHR_16bit_storage"/> + </spirvcapability> + <spirvcapability name="StoragePushConstant16"> + <enable struct="VkPhysicalDeviceVulkan11Features" feature="storagePushConstant16" requires="VK_VERSION_1_1,VK_KHR_16bit_storage"/> + </spirvcapability> + <spirvcapability name="StorageInputOutput16"> + <enable struct="VkPhysicalDeviceVulkan11Features" feature="storageInputOutput16" requires="VK_VERSION_1_1,VK_KHR_16bit_storage"/> + </spirvcapability> + <spirvcapability name="GroupNonUniform"> + <enable property="VkPhysicalDeviceVulkan11Properties" member="subgroupSupportedOperations" value="VK_SUBGROUP_FEATURE_BASIC_BIT" requires="VK_VERSION_1_1"/> + </spirvcapability> + <spirvcapability name="GroupNonUniformVote"> + <enable property="VkPhysicalDeviceVulkan11Properties" member="subgroupSupportedOperations" value="VK_SUBGROUP_FEATURE_VOTE_BIT" requires="VK_VERSION_1_1"/> + </spirvcapability> + <spirvcapability name="GroupNonUniformArithmetic"> + <enable property="VkPhysicalDeviceVulkan11Properties" member="subgroupSupportedOperations" value="VK_SUBGROUP_FEATURE_ARITHMETIC_BIT" requires="VK_VERSION_1_1"/> + </spirvcapability> + <spirvcapability name="GroupNonUniformBallot"> + <enable property="VkPhysicalDeviceVulkan11Properties" member="subgroupSupportedOperations" value="VK_SUBGROUP_FEATURE_BALLOT_BIT" requires="VK_VERSION_1_1"/> + </spirvcapability> + <spirvcapability name="GroupNonUniformShuffle"> + <enable property="VkPhysicalDeviceVulkan11Properties" member="subgroupSupportedOperations" value="VK_SUBGROUP_FEATURE_SHUFFLE_BIT" requires="VK_VERSION_1_1"/> + </spirvcapability> + <spirvcapability name="GroupNonUniformShuffleRelative"> + <enable property="VkPhysicalDeviceVulkan11Properties" member="subgroupSupportedOperations" value="VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT" requires="VK_VERSION_1_1"/> + </spirvcapability> + <spirvcapability name="GroupNonUniformClustered"> + <enable property="VkPhysicalDeviceVulkan11Properties" member="subgroupSupportedOperations" value="VK_SUBGROUP_FEATURE_CLUSTERED_BIT" requires="VK_VERSION_1_1"/> + </spirvcapability> + <spirvcapability name="GroupNonUniformQuad"> + <enable property="VkPhysicalDeviceVulkan11Properties" member="subgroupSupportedOperations" value="VK_SUBGROUP_FEATURE_QUAD_BIT" requires="VK_VERSION_1_1"/> + </spirvcapability> + <spirvcapability name="GroupNonUniformPartitionedNV"> + <enable property="VkPhysicalDeviceVulkan11Properties" member="subgroupSupportedOperations" value="VK_SUBGROUP_FEATURE_PARTITIONED_BIT_NV" requires="VK_NV_shader_subgroup_partitioned"/> + </spirvcapability> + <spirvcapability name="SampleMaskPostDepthCoverage"> + <enable extension="VK_EXT_post_depth_coverage"/> + </spirvcapability> + <spirvcapability name="ShaderNonUniform"> + <enable version="VK_API_VERSION_1_2"/> + <enable extension="VK_EXT_descriptor_indexing"/> + </spirvcapability> + <spirvcapability name="RuntimeDescriptorArray"> + <enable struct="VkPhysicalDeviceVulkan12Features" feature="runtimeDescriptorArray" requires="VK_VERSION_1_2,VK_EXT_descriptor_indexing"/> + </spirvcapability> + <spirvcapability name="InputAttachmentArrayDynamicIndexing"> + <enable struct="VkPhysicalDeviceVulkan12Features" feature="shaderInputAttachmentArrayDynamicIndexing" requires="VK_VERSION_1_2,VK_EXT_descriptor_indexing"/> + </spirvcapability> + <spirvcapability name="UniformTexelBufferArrayDynamicIndexing"> + <enable struct="VkPhysicalDeviceVulkan12Features" feature="shaderUniformTexelBufferArrayDynamicIndexing" requires="VK_VERSION_1_2,VK_EXT_descriptor_indexing"/> + </spirvcapability> + <spirvcapability name="StorageTexelBufferArrayDynamicIndexing"> + <enable struct="VkPhysicalDeviceVulkan12Features" feature="shaderStorageTexelBufferArrayDynamicIndexing" requires="VK_VERSION_1_2,VK_EXT_descriptor_indexing"/> + </spirvcapability> + <spirvcapability name="UniformBufferArrayNonUniformIndexing"> + <enable struct="VkPhysicalDeviceVulkan12Features" feature="shaderUniformBufferArrayNonUniformIndexing" requires="VK_VERSION_1_2,VK_EXT_descriptor_indexing"/> + </spirvcapability> + <spirvcapability name="SampledImageArrayNonUniformIndexing"> + <enable struct="VkPhysicalDeviceVulkan12Features" feature="shaderSampledImageArrayNonUniformIndexing" requires="VK_VERSION_1_2,VK_EXT_descriptor_indexing"/> + </spirvcapability> + <spirvcapability name="StorageBufferArrayNonUniformIndexing"> + <enable struct="VkPhysicalDeviceVulkan12Features" feature="shaderStorageBufferArrayNonUniformIndexing" requires="VK_VERSION_1_2,VK_EXT_descriptor_indexing"/> + </spirvcapability> + <spirvcapability name="StorageImageArrayNonUniformIndexing"> + <enable struct="VkPhysicalDeviceVulkan12Features" feature="shaderStorageImageArrayNonUniformIndexing" requires="VK_VERSION_1_2,VK_EXT_descriptor_indexing"/> + </spirvcapability> + <spirvcapability name="InputAttachmentArrayNonUniformIndexing"> + <enable struct="VkPhysicalDeviceVulkan12Features" feature="shaderInputAttachmentArrayNonUniformIndexing" requires="VK_VERSION_1_2,VK_EXT_descriptor_indexing"/> + </spirvcapability> + <spirvcapability name="UniformTexelBufferArrayNonUniformIndexing"> + <enable struct="VkPhysicalDeviceVulkan12Features" feature="shaderUniformTexelBufferArrayNonUniformIndexing" requires="VK_VERSION_1_2,VK_EXT_descriptor_indexing"/> + </spirvcapability> + <spirvcapability name="StorageTexelBufferArrayNonUniformIndexing"> + <enable struct="VkPhysicalDeviceVulkan12Features" feature="shaderStorageTexelBufferArrayNonUniformIndexing" requires="VK_VERSION_1_2,VK_EXT_descriptor_indexing"/> + </spirvcapability> + <spirvcapability name="Float16"> + <enable struct="VkPhysicalDeviceVulkan12Features" feature="shaderFloat16" requires="VK_VERSION_1_2,VK_KHR_shader_float16_int8"/> + <enable extension="VK_AMD_gpu_shader_half_float"/> + </spirvcapability> + <spirvcapability name="Int8"> + <enable struct="VkPhysicalDeviceVulkan12Features" feature="shaderInt8" requires="VK_VERSION_1_2,VK_KHR_shader_float16_int8"/> + </spirvcapability> + <spirvcapability name="StorageBuffer8BitAccess"> + <enable struct="VkPhysicalDeviceVulkan12Features" feature="storageBuffer8BitAccess" requires="VK_VERSION_1_2,VK_KHR_8bit_storage"/> + </spirvcapability> + <spirvcapability name="UniformAndStorageBuffer8BitAccess"> + <enable struct="VkPhysicalDeviceVulkan12Features" feature="uniformAndStorageBuffer8BitAccess" requires="VK_VERSION_1_2,VK_KHR_8bit_storage"/> + </spirvcapability> + <spirvcapability name="StoragePushConstant8"> + <enable struct="VkPhysicalDeviceVulkan12Features" feature="storagePushConstant8" requires="VK_VERSION_1_2,VK_KHR_8bit_storage"/> + </spirvcapability> + <spirvcapability name="VulkanMemoryModel"> + <enable struct="VkPhysicalDeviceVulkan12Features" feature="vulkanMemoryModel" requires="VK_VERSION_1_2,VK_KHR_vulkan_memory_model"/> + </spirvcapability> + <spirvcapability name="VulkanMemoryModelDeviceScope"> + <enable struct="VkPhysicalDeviceVulkan12Features" feature="vulkanMemoryModelDeviceScope" requires="VK_VERSION_1_2,VK_KHR_vulkan_memory_model"/> + </spirvcapability> + <spirvcapability name="DenormPreserve"> + <enable property="VkPhysicalDeviceVulkan12Properties" member="shaderDenormPreserveFloat16" value="VK_TRUE" requires="VK_VERSION_1_2,VK_KHR_shader_float_controls"/> + <enable property="VkPhysicalDeviceVulkan12Properties" member="shaderDenormPreserveFloat32" value="VK_TRUE" requires="VK_VERSION_1_2,VK_KHR_shader_float_controls"/> + <enable property="VkPhysicalDeviceVulkan12Properties" member="shaderDenormPreserveFloat64" value="VK_TRUE" requires="VK_VERSION_1_2,VK_KHR_shader_float_controls"/> + </spirvcapability> + <spirvcapability name="DenormFlushToZero"> + <enable property="VkPhysicalDeviceVulkan12Properties" member="shaderDenormFlushToZeroFloat16" value="VK_TRUE" requires="VK_VERSION_1_2,VK_KHR_shader_float_controls"/> + <enable property="VkPhysicalDeviceVulkan12Properties" member="shaderDenormFlushToZeroFloat32" value="VK_TRUE" requires="VK_VERSION_1_2,VK_KHR_shader_float_controls"/> + <enable property="VkPhysicalDeviceVulkan12Properties" member="shaderDenormFlushToZeroFloat64" value="VK_TRUE" requires="VK_VERSION_1_2,VK_KHR_shader_float_controls"/> + </spirvcapability> + <spirvcapability name="SignedZeroInfNanPreserve"> + <enable property="VkPhysicalDeviceVulkan12Properties" member="shaderSignedZeroInfNanPreserveFloat16" value="VK_TRUE" requires="VK_VERSION_1_2,VK_KHR_shader_float_controls"/> + <enable property="VkPhysicalDeviceVulkan12Properties" member="shaderSignedZeroInfNanPreserveFloat32" value="VK_TRUE" requires="VK_VERSION_1_2,VK_KHR_shader_float_controls"/> + <enable property="VkPhysicalDeviceVulkan12Properties" member="shaderSignedZeroInfNanPreserveFloat64" value="VK_TRUE" requires="VK_VERSION_1_2,VK_KHR_shader_float_controls"/> + </spirvcapability> + <spirvcapability name="RoundingModeRTE"> + <enable property="VkPhysicalDeviceVulkan12Properties" member="shaderRoundingModeRTEFloat16" value="VK_TRUE" requires="VK_VERSION_1_2,VK_KHR_shader_float_controls"/> + <enable property="VkPhysicalDeviceVulkan12Properties" member="shaderRoundingModeRTEFloat32" value="VK_TRUE" requires="VK_VERSION_1_2,VK_KHR_shader_float_controls"/> + <enable property="VkPhysicalDeviceVulkan12Properties" member="shaderRoundingModeRTEFloat64" value="VK_TRUE" requires="VK_VERSION_1_2,VK_KHR_shader_float_controls"/> + </spirvcapability> + <spirvcapability name="RoundingModeRTZ"> + <enable property="VkPhysicalDeviceVulkan12Properties" member="shaderRoundingModeRTZFloat16" value="VK_TRUE" requires="VK_VERSION_1_2,VK_KHR_shader_float_controls"/> + <enable property="VkPhysicalDeviceVulkan12Properties" member="shaderRoundingModeRTZFloat32" value="VK_TRUE" requires="VK_VERSION_1_2,VK_KHR_shader_float_controls"/> + <enable property="VkPhysicalDeviceVulkan12Properties" member="shaderRoundingModeRTZFloat64" value="VK_TRUE" requires="VK_VERSION_1_2,VK_KHR_shader_float_controls"/> + </spirvcapability> + <spirvcapability name="ComputeDerivativeGroupQuadsNV"> + <enable struct="VkPhysicalDeviceComputeShaderDerivativesFeaturesNV" feature="computeDerivativeGroupQuads" requires="VK_NV_compute_shader_derivatives"/> + </spirvcapability> + <spirvcapability name="ComputeDerivativeGroupLinearNV"> + <enable struct="VkPhysicalDeviceComputeShaderDerivativesFeaturesNV" feature="computeDerivativeGroupLinear" requires="VK_NV_compute_shader_derivatives"/> + </spirvcapability> + <spirvcapability name="FragmentBarycentricNV"> + <enable struct="VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV" feature="fragmentShaderBarycentric" requires="VK_NV_fragment_shader_barycentric"/> + </spirvcapability> + <spirvcapability name="ImageFootprintNV"> + <enable struct="VkPhysicalDeviceShaderImageFootprintFeaturesNV" feature="imageFootprint" requires="VK_NV_shader_image_footprint"/> + </spirvcapability> + <spirvcapability name="ShadingRateNV"> + <enable struct="VkPhysicalDeviceShadingRateImageFeaturesNV" feature="shadingRateImage" requires="VK_NV_shading_rate_image"/> + </spirvcapability> + <spirvcapability name="MeshShadingNV"> + <enable extension="VK_NV_mesh_shader"/> + </spirvcapability> + <spirvcapability name="RayTracingProvisionalKHR"> + <enable struct="VkPhysicalDeviceRayTracingFeaturesKHR" feature="rayTracing" requires="VK_KHR_ray_tracing"/> + </spirvcapability> + <spirvcapability name="RayQueryProvisionalKHR"> + <enable struct="VkPhysicalDeviceRayTracingFeaturesKHR" feature="rayQuery" requires="VK_KHR_ray_tracing"/> + </spirvcapability> + <spirvcapability name="RayTraversalPrimitiveCullingProvisionalKHR"> + <enable struct="VkPhysicalDeviceRayTracingFeaturesKHR" feature="rayTracingPrimitiveCulling" requires="VK_KHR_ray_tracing"/> + </spirvcapability> + <spirvcapability name="RayTracingNV"> + <enable extension="VK_NV_ray_tracing"/> + </spirvcapability> + <spirvcapability name="TransformFeedback"> + <enable struct="VkPhysicalDeviceTransformFeedbackFeaturesEXT" feature="transformFeedback" requires="VK_EXT_transform_feedback"/> + </spirvcapability> + <spirvcapability name="GeometryStreams"> + <enable struct="VkPhysicalDeviceTransformFeedbackFeaturesEXT" feature="geometryStreams" requires="VK_EXT_transform_feedback"/> + </spirvcapability> + <spirvcapability name="FragmentDensityEXT"> + <enable struct="VkPhysicalDeviceFragmentDensityMapFeaturesEXT" feature="fragmentDensityMap" requires="VK_EXT_fragment_density_map"/> + </spirvcapability> + <spirvcapability name="PhysicalStorageBufferAddresses"> + <enable struct="VkPhysicalDeviceVulkan12Features" feature="bufferDeviceAddress" requires="VK_VERSION_1_2,VK_KHR_buffer_device_address"/> + <enable struct="VkPhysicalDeviceBufferDeviceAddressFeaturesEXT" feature="bufferDeviceAddress" requires="VK_EXT_buffer_device_address" alias="bufferDeviceAddressEXT"/> + </spirvcapability> + <spirvcapability name="CooperativeMatrixNV"> + <enable struct="VkPhysicalDeviceCooperativeMatrixFeaturesNV" feature="cooperativeMatrix" requires="VK_NV_cooperative_matrix"/> + </spirvcapability> + <spirvcapability name="IntegerFunctions2INTEL"> + <enable struct="VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL" feature="shaderIntegerFunctions2" requires="VK_INTEL_shader_integer_functions2"/> + </spirvcapability> + <spirvcapability name="ShaderSMBuiltinsNV"> + <enable struct="VkPhysicalDeviceShaderSMBuiltinsFeaturesNV" feature="shaderSMBuiltins" requires="VK_NV_shader_sm_builtins"/> + </spirvcapability> + <spirvcapability name="FragmentShaderSampleInterlockEXT"> + <enable struct="VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT" feature="fragmentShaderSampleInterlock" requires="VK_EXT_fragment_shader_interlock"/> + </spirvcapability> + <spirvcapability name="FragmentShaderPixelInterlockEXT"> + <enable struct="VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT" feature="fragmentShaderPixelInterlock" requires="VK_EXT_fragment_shader_interlock"/> + </spirvcapability> + <spirvcapability name="FragmentShaderShadingRateInterlockEXT"> + <enable struct="VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT" feature="fragmentShaderShadingRateInterlock" requires="VK_EXT_fragment_shader_interlock"/> + <enable struct="VkPhysicalDeviceShadingRateImageFeaturesNV" feature="shadingRateImage" requires="VK_NV_shading_rate_image"/> + </spirvcapability> + <spirvcapability name="DemoteToHelperInvocationEXT"> + <enable struct="VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT" feature="shaderDemoteToHelperInvocation" requires="VK_EXT_shader_demote_to_helper_invocation"/> + </spirvcapability> + <spirvcapability name="FragmentShadingRateKHR"> + <enable struct="VkPhysicalDeviceFragmentShadingRateFeaturesKHR" feature="pipelineFragmentShadingRate" requires="VK_KHR_fragment_shading_rate"/> + <enable struct="VkPhysicalDeviceFragmentShadingRateFeaturesKHR" feature="primitiveFragmentShadingRate" requires="VK_KHR_fragment_shading_rate"/> + <enable struct="VkPhysicalDeviceFragmentShadingRateFeaturesKHR" feature="attachmentFragmentShadingRate" requires="VK_KHR_fragment_shading_rate"/> + </spirvcapability> + </spirvcapabilities> </registry> |