summaryrefslogtreecommitdiffhomepage
path: root/registry
diff options
context:
space:
mode:
Diffstat (limited to 'registry')
-rw-r--r--registry/generator.py16
-rwxr-xr-xregistry/genvk.py31
-rw-r--r--[-rwxr-xr-x]registry/reg.py71
-rw-r--r--registry/validusage.json168
-rw-r--r--registry/vk.xml684
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> &#43; <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> &#43; <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 &#43; <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 &#43; <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> &#43; <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> &#43; <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 &#43; <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 &#43; <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> &#43; <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 &#43; <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> &#43; <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 &#43; <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="&quot;VK_EXT_extension_334&quot;" name="VK_EXT_EXTENSION_334_EXTENSION_NAME"/>
+ <enum value="0" name="VK_QCOM_rotated_copy_commands_SPEC_VERSION"/>
+ <enum value="&quot;VK_QCOM_rotated_copy_commands&quot;" 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>