Update for Vulkan-Docs 1.2.159
This commit is contained in:
parent
320af06cbd
commit
87451c55aa
File diff suppressed because it is too large
Load Diff
@ -43,7 +43,7 @@ extern "C" {
|
||||
#define VK_API_VERSION_1_0 VK_MAKE_VERSION(1, 0, 0)// Patch version should always be set to 0
|
||||
|
||||
// Version of this file
|
||||
#define VK_HEADER_VERSION 158
|
||||
#define VK_HEADER_VERSION 159
|
||||
|
||||
// Complete version of this file
|
||||
#define VK_HEADER_VERSION_COMPLETE VK_MAKE_VERSION(1, 2, VK_HEADER_VERSION)
|
||||
@ -601,6 +601,7 @@ typedef enum VkStructureType {
|
||||
VK_STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV = 1000300001,
|
||||
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT = 1000332000,
|
||||
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT = 1000332001,
|
||||
VK_STRUCTURE_TYPE_COPY_COMMAND_TRANSFORM_INFO_QCOM = 1000333000,
|
||||
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES_EXT = 1000335000,
|
||||
VK_STRUCTURE_TYPE_COPY_BUFFER_INFO_2_KHR = 1000337000,
|
||||
VK_STRUCTURE_TYPE_COPY_IMAGE_INFO_2_KHR = 1000337001,
|
||||
@ -6688,8 +6689,10 @@ typedef enum VkPerformanceCounterStorageKHR {
|
||||
} VkPerformanceCounterStorageKHR;
|
||||
|
||||
typedef enum VkPerformanceCounterDescriptionFlagBitsKHR {
|
||||
VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_KHR = 0x00000001,
|
||||
VK_PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_KHR = 0x00000002,
|
||||
VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_BIT_KHR = 0x00000001,
|
||||
VK_PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_BIT_KHR = 0x00000002,
|
||||
VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_KHR = VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_BIT_KHR,
|
||||
VK_PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_KHR = VK_PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_BIT_KHR,
|
||||
VK_PERFORMANCE_COUNTER_DESCRIPTION_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
|
||||
} VkPerformanceCounterDescriptionFlagBitsKHR;
|
||||
typedef VkFlags VkPerformanceCounterDescriptionFlagsKHR;
|
||||
@ -8273,7 +8276,8 @@ VKAPI_ATTR VkResult VKAPI_CALL vkReleaseDisplayEXT(
|
||||
#define VK_EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME "VK_EXT_display_surface_counter"
|
||||
|
||||
typedef enum VkSurfaceCounterFlagBitsEXT {
|
||||
VK_SURFACE_COUNTER_VBLANK_EXT = 0x00000001,
|
||||
VK_SURFACE_COUNTER_VBLANK_BIT_EXT = 0x00000001,
|
||||
VK_SURFACE_COUNTER_VBLANK_EXT = VK_SURFACE_COUNTER_VBLANK_BIT_EXT,
|
||||
VK_SURFACE_COUNTER_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
|
||||
} VkSurfaceCounterFlagBitsEXT;
|
||||
typedef VkFlags VkSurfaceCounterFlagsEXT;
|
||||
@ -11280,6 +11284,17 @@ typedef struct VkPhysicalDeviceFragmentDensityMap2PropertiesEXT {
|
||||
|
||||
|
||||
|
||||
#define VK_QCOM_rotated_copy_commands 1
|
||||
#define VK_QCOM_rotated_copy_commands_SPEC_VERSION 0
|
||||
#define VK_QCOM_rotated_copy_commands_EXTENSION_NAME "VK_QCOM_rotated_copy_commands"
|
||||
typedef struct VkCopyCommandTransformInfoQCOM {
|
||||
VkStructureType sType;
|
||||
const void* pNext;
|
||||
VkSurfaceTransformFlagBitsKHR transform;
|
||||
} VkCopyCommandTransformInfoQCOM;
|
||||
|
||||
|
||||
|
||||
#define VK_EXT_image_robustness 1
|
||||
#define VK_EXT_IMAGE_ROBUSTNESS_SPEC_VERSION 1
|
||||
#define VK_EXT_IMAGE_ROBUSTNESS_EXTENSION_NAME "VK_EXT_image_robustness"
|
||||
|
@ -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.
|
||||
|
@ -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')
|
||||
|
71
registry/reg.py
Executable file → Normal file
71
registry/reg.py
Executable file → Normal file
@ -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):
|
||||
|
@ -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": {
|
||||
@ -4466,6 +4466,14 @@
|
||||
"vuid": "VUID-VkAttachmentDescription2-sType-sType",
|
||||
"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"
|
||||
@ -4664,6 +4672,14 @@
|
||||
"vuid": "VUID-VkSubpassDescription2-sType-sType",
|
||||
"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",
|
||||
@ -4846,6 +4868,14 @@
|
||||
"vuid": "VUID-VkAttachmentReference2-sType-sType",
|
||||
"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"
|
||||
@ -4952,6 +4982,10 @@
|
||||
"vuid": "VUID-VkSubpassDependency2-sType-sType",
|
||||
"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>"
|
||||
@ -19280,14 +19314,14 @@
|
||||
}
|
||||
],
|
||||
"core": [
|
||||
{
|
||||
"vuid": "VUID-vkCmdCopyBufferToImage-pRegions-00171",
|
||||
"text": " <code>srcBuffer</code> <strong class=\"purple\">must</strong> be large enough to contain all buffer locations that are accessed according to <a href=\"#copies-buffers-images-addressing\">Buffer and Image Addressing</a>, for each element of <code>pRegions</code>"
|
||||
},
|
||||
{
|
||||
"vuid": "VUID-vkCmdCopyBufferToImage-pRegions-00172",
|
||||
"text": " The image region specified by each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be a region that is contained within <code>dstImage</code>"
|
||||
},
|
||||
{
|
||||
"vuid": "VUID-vkCmdCopyBufferToImage-pRegions-00171",
|
||||
"text": " <code>srcBuffer</code> <strong class=\"purple\">must</strong> be large enough to contain all buffer locations that are accessed according to <a href=\"#copies-buffers-images-addressing\">Buffer and Image Addressing</a>, for each element of <code>pRegions</code>"
|
||||
},
|
||||
{
|
||||
"vuid": "VUID-vkCmdCopyBufferToImage-pRegions-00173",
|
||||
"text": " The union of all source regions, and the union of all destination regions, specified by the elements of <code>pRegions</code>, <strong class=\"purple\">must</strong> not overlap in memory"
|
||||
@ -19342,11 +19376,11 @@
|
||||
},
|
||||
{
|
||||
"vuid": "VUID-vkCmdCopyBufferToImage-imageOffset-00197",
|
||||
"text": " For each element of <code>pRegions</code>, <code>imageOffset.x</code> and <span class=\"eq\">(<code>imageExtent.width</code> + <code>imageOffset.x</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the width of the specified <code>imageSubresource</code> of {imageparam}"
|
||||
"text": " For each element of <code>pRegions</code>, <code>imageOffset.x</code> and <span class=\"eq\">(<code>imageExtent.width</code> + <code>imageOffset.x</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the width of the specified <code>imageSubresource</code> of <code>dstImage</code>"
|
||||
},
|
||||
{
|
||||
"vuid": "VUID-vkCmdCopyBufferToImage-imageOffset-00198",
|
||||
"text": " For each element of <code>pRegions</code>, <code>imageOffset.y</code> and <span class=\"eq\">(imageExtent.height + <code>imageOffset.y</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the height of the specified <code>imageSubresource</code> of {imageparam}"
|
||||
"text": " For each element of <code>pRegions</code>, <code>imageOffset.y</code> and <span class=\"eq\">(imageExtent.height + <code>imageOffset.y</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the height of the specified <code>imageSubresource</code> of <code>dstImage</code>"
|
||||
},
|
||||
{
|
||||
"vuid": "VUID-vkCmdCopyBufferToImage-srcImage-00199",
|
||||
@ -19504,14 +19538,14 @@
|
||||
}
|
||||
],
|
||||
"core": [
|
||||
{
|
||||
"vuid": "VUID-vkCmdCopyImageToBuffer-pRegions-00183",
|
||||
"text": " <code>dstBuffer</code> <strong class=\"purple\">must</strong> be large enough to contain all buffer locations that are accessed according to <a href=\"#copies-buffers-images-addressing\">Buffer and Image Addressing</a>, for each element of <code>pRegions</code>"
|
||||
},
|
||||
{
|
||||
"vuid": "VUID-vkCmdCopyImageToBuffer-pRegions-00182",
|
||||
"text": " The image region specified by each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be a region that is contained within <code>srcImage</code>"
|
||||
},
|
||||
{
|
||||
"vuid": "VUID-vkCmdCopyImageToBuffer-pRegions-00183",
|
||||
"text": " <code>dstBuffer</code> <strong class=\"purple\">must</strong> be large enough to contain all buffer locations that are accessed according to <a href=\"#copies-buffers-images-addressing\">Buffer and Image Addressing</a>, for each element of <code>pRegions</code>"
|
||||
},
|
||||
{
|
||||
"vuid": "VUID-vkCmdCopyImageToBuffer-pRegions-00184",
|
||||
"text": " The union of all source regions, and the union of all destination regions, specified by the elements of <code>pRegions</code>, <strong class=\"purple\">must</strong> not overlap in memory"
|
||||
@ -19562,11 +19596,11 @@
|
||||
},
|
||||
{
|
||||
"vuid": "VUID-vkCmdCopyImageToBuffer-imageOffset-00197",
|
||||
"text": " For each element of <code>pRegions</code>, <code>imageOffset.x</code> and <span class=\"eq\">(<code>imageExtent.width</code> + <code>imageOffset.x</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the width of the specified <code>imageSubresource</code> of {imageparam}"
|
||||
"text": " For each element of <code>pRegions</code> , <code>imageOffset.x</code> and <span class=\"eq\">(<code>imageExtent.width</code> + <code>imageOffset.x</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the width of the specified <code>imageSubresource</code> of <code>srcImage</code>"
|
||||
},
|
||||
{
|
||||
"vuid": "VUID-vkCmdCopyImageToBuffer-imageOffset-00198",
|
||||
"text": " For each element of <code>pRegions</code>, <code>imageOffset.y</code> and <span class=\"eq\">(imageExtent.height + <code>imageOffset.y</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the height of the specified <code>imageSubresource</code> of {imageparam}"
|
||||
"text": " For each element of <code>pRegions</code> , <code>imageOffset.y</code> and <span class=\"eq\">(imageExtent.height + <code>imageOffset.y</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the height of the specified <code>imageSubresource</code> of <code>srcImage</code>"
|
||||
},
|
||||
{
|
||||
"vuid": "VUID-vkCmdCopyImageToBuffer-srcImage-00199",
|
||||
@ -19761,15 +19795,31 @@
|
||||
]
|
||||
},
|
||||
"VkCopyBufferToImageInfo2KHR": {
|
||||
"(VK_KHR_copy_commands2)+!(VK_QCOM_rotated_copy_commands)": [
|
||||
{
|
||||
"vuid": "VUID-VkCopyBufferToImageInfo2KHR-pRegions-00172",
|
||||
"text": " The image region specified by each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be a region that is contained within <code>dstImage</code>"
|
||||
}
|
||||
],
|
||||
"(VK_KHR_copy_commands2)+(VK_QCOM_rotated_copy_commands)": [
|
||||
{
|
||||
"vuid": "VUID-VkCopyBufferToImageInfo2KHR-pRegions-04554",
|
||||
"text": " If the image region specified by each element of <code>pRegions</code> does contain <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a> in its <code>pNext</code> chain, the rotated destination region as described in <a href=\"#copies-buffers-images-rotation-addressing\">Buffer and Image Addressing with Rotation</a> <strong class=\"purple\">must</strong> be contained within <code>dstImage</code>."
|
||||
},
|
||||
{
|
||||
"vuid": "VUID-VkCopyBufferToImageInfo2KHR-pRegions-04555",
|
||||
"text": " If any element of <code>pRegions</code> contains <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a> in its <code>pNext</code> chain, then the <code>dstImage</code> <strong class=\"purple\">must</strong> not be a <a href=\"#blocked-image\">blocked image</a>."
|
||||
},
|
||||
{
|
||||
"vuid": "VUID-VkCopyBufferToImageInfo2KHR-pRegions-04556",
|
||||
"text": " If any element of <code>pRegions</code> contains <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a> in its <code>pNext</code> chain, then the <code>dstImage</code> <strong class=\"purple\">must</strong> be of type <code>VK_IMAGE_TYPE_2D</code> and <strong class=\"purple\">must</strong> not be a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar format</a>."
|
||||
}
|
||||
],
|
||||
"core": [
|
||||
{
|
||||
"vuid": "VUID-VkCopyBufferToImageInfo2KHR-pRegions-00171",
|
||||
"text": " <code>srcBuffer</code> <strong class=\"purple\">must</strong> be large enough to contain all buffer locations that are accessed according to <a href=\"#copies-buffers-images-addressing\">Buffer and Image Addressing</a>, for each element of <code>pRegions</code>"
|
||||
},
|
||||
{
|
||||
"vuid": "VUID-VkCopyBufferToImageInfo2KHR-pRegions-00172",
|
||||
"text": " The image region specified by each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be a region that is contained within <code>dstImage</code>"
|
||||
},
|
||||
{
|
||||
"vuid": "VUID-VkCopyBufferToImageInfo2KHR-pRegions-00173",
|
||||
"text": " The union of all source regions, and the union of all destination regions, specified by the elements of <code>pRegions</code>, <strong class=\"purple\">must</strong> not overlap in memory"
|
||||
@ -19824,11 +19874,11 @@
|
||||
},
|
||||
{
|
||||
"vuid": "VUID-VkCopyBufferToImageInfo2KHR-imageOffset-00197",
|
||||
"text": " For each element of <code>pRegions</code>, <code>imageOffset.x</code> and <span class=\"eq\">(<code>imageExtent.width</code> + <code>imageOffset.x</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the width of the specified <code>imageSubresource</code> of {imageparam}"
|
||||
"text": " For each element of <code>pRegions</code>"
|
||||
},
|
||||
{
|
||||
"vuid": "VUID-VkCopyBufferToImageInfo2KHR-imageOffset-00198",
|
||||
"text": " For each element of <code>pRegions</code>, <code>imageOffset.y</code> and <span class=\"eq\">(imageExtent.height + <code>imageOffset.y</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the height of the specified <code>imageSubresource</code> of {imageparam}"
|
||||
"text": " For each element of <code>pRegions</code>"
|
||||
},
|
||||
{
|
||||
"vuid": "VUID-VkCopyBufferToImageInfo2KHR-srcImage-00199",
|
||||
@ -20003,15 +20053,31 @@
|
||||
]
|
||||
},
|
||||
"VkCopyImageToBufferInfo2KHR": {
|
||||
"(VK_KHR_copy_commands2)+!(VK_QCOM_rotated_copy_commands)": [
|
||||
{
|
||||
"vuid": "VUID-VkCopyImageToBufferInfo2KHR-pRegions-00182",
|
||||
"text": " The image region specified by each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be a region that is contained within <code>srcImage</code>"
|
||||
}
|
||||
],
|
||||
"(VK_KHR_copy_commands2)+(VK_QCOM_rotated_copy_commands)": [
|
||||
{
|
||||
"vuid": "VUID-VkCopyImageToBufferInfo2KHR-pRegions-04557",
|
||||
"text": " If the image region specified by each element of <code>pRegions</code> does contain <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a> in its <code>pNext</code> chain, the rotated source region as described in <a href=\"#copies-buffers-images-rotation-addressing\">Buffer and Image Addressing with Rotation</a> <strong class=\"purple\">must</strong> be contained within <code>srcImage</code>."
|
||||
},
|
||||
{
|
||||
"vuid": "VUID-VkCopyImageToBufferInfo2KHR-pRegions-04558",
|
||||
"text": " If any element of <code>pRegions</code> contains <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a> in its <code>pNext</code> chain, then the <code>srcImage</code> <strong class=\"purple\">must</strong> not be a <a href=\"#blocked-image\">blocked image</a>"
|
||||
},
|
||||
{
|
||||
"vuid": "VUID-VkCopyImageToBufferInfo2KHR-pRegions-04559",
|
||||
"text": " If any element of <code>pRegions</code> contains <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a> in its <code>pNext</code> chain, then the <code>srcImage</code> <strong class=\"purple\">must</strong> be of type <code>VK_IMAGE_TYPE_2D</code>, and <strong class=\"purple\">must</strong> not be a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar format</a>."
|
||||
}
|
||||
],
|
||||
"core": [
|
||||
{
|
||||
"vuid": "VUID-VkCopyImageToBufferInfo2KHR-pRegions-00183",
|
||||
"text": " <code>dstBuffer</code> <strong class=\"purple\">must</strong> be large enough to contain all buffer locations that are accessed according to <a href=\"#copies-buffers-images-addressing\">Buffer and Image Addressing</a>, for each element of <code>pRegions</code>"
|
||||
},
|
||||
{
|
||||
"vuid": "VUID-VkCopyImageToBufferInfo2KHR-pRegions-00182",
|
||||
"text": " The image region specified by each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be a region that is contained within <code>srcImage</code>"
|
||||
},
|
||||
{
|
||||
"vuid": "VUID-VkCopyImageToBufferInfo2KHR-pRegions-00184",
|
||||
"text": " The union of all source regions, and the union of all destination regions, specified by the elements of <code>pRegions</code>, <strong class=\"purple\">must</strong> not overlap in memory"
|
||||
@ -20062,11 +20128,11 @@
|
||||
},
|
||||
{
|
||||
"vuid": "VUID-VkCopyImageToBufferInfo2KHR-imageOffset-00197",
|
||||
"text": " For each element of <code>pRegions</code>, <code>imageOffset.x</code> and <span class=\"eq\">(<code>imageExtent.width</code> + <code>imageOffset.x</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the width of the specified <code>imageSubresource</code> of {imageparam}"
|
||||
"text": " For each element of <code>pRegions</code>"
|
||||
},
|
||||
{
|
||||
"vuid": "VUID-VkCopyImageToBufferInfo2KHR-imageOffset-00198",
|
||||
"text": " For each element of <code>pRegions</code>, <code>imageOffset.y</code> and <span class=\"eq\">(imageExtent.height + <code>imageOffset.y</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the height of the specified <code>imageSubresource</code> of {imageparam}"
|
||||
"text": " For each element of <code>pRegions</code>"
|
||||
},
|
||||
{
|
||||
"vuid": "VUID-VkCopyImageToBufferInfo2KHR-srcImage-00199",
|
||||
@ -20218,7 +20284,11 @@
|
||||
},
|
||||
{
|
||||
"vuid": "VUID-VkBufferImageCopy2KHR-pNext-pNext",
|
||||
"text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
|
||||
"text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a>"
|
||||
},
|
||||
{
|
||||
"vuid": "VUID-VkBufferImageCopy2KHR-sType-unique",
|
||||
"text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
|
||||
},
|
||||
{
|
||||
"vuid": "VUID-VkBufferImageCopy2KHR-imageSubresource-parameter",
|
||||
@ -20226,6 +20296,18 @@
|
||||
}
|
||||
]
|
||||
},
|
||||
"VkCopyCommandTransformInfoQCOM": {
|
||||
"(VK_QCOM_rotated_copy_commands)": [
|
||||
{
|
||||
"vuid": "VUID-VkCopyCommandTransformInfoQCOM-transform-04560",
|
||||
"text": " <code>transform</code> <strong class=\"purple\">must</strong> be <code>VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR</code>, <code>VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR</code>, <code>VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR</code>, or <code>VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR</code>"
|
||||
},
|
||||
{
|
||||
"vuid": "VUID-VkCopyCommandTransformInfoQCOM-sType-sType",
|
||||
"text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COPY_COMMAND_TRANSFORM_INFO_QCOM</code>"
|
||||
}
|
||||
]
|
||||
},
|
||||
"vkCmdBlitImage": {
|
||||
"(VK_VERSION_1_1)": [
|
||||
{
|
||||
@ -20725,6 +20807,16 @@
|
||||
"text": " <code>dstImage</code> and <code>srcImage</code> <strong class=\"purple\">must</strong> not have been created with <code>flags</code> containing <code>VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT</code>"
|
||||
}
|
||||
],
|
||||
"(VK_QCOM_rotated_copy_commands)": [
|
||||
{
|
||||
"vuid": "VUID-VkBlitImageInfo2KHR-pRegions-04561",
|
||||
"text": " If any element of <code>pRegions</code> contains <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a> in its <code>pNext</code> chain, then <code>srcImage</code> and <code>dstImage</code> <strong class=\"purple\">must</strong> not be a block-compressed image."
|
||||
},
|
||||
{
|
||||
"vuid": "VUID-VkBlitImageInfo2KHR-pRegions-04562",
|
||||
"text": " If any element of <code>pRegions</code> contains <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a> in its <code>pNext</code> chain, then the <code>srcImage</code> <strong class=\"purple\">must</strong> be of type <code>VK_IMAGE_TYPE_2D</code> and <strong class=\"purple\">must</strong> not be a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar format</a>."
|
||||
}
|
||||
],
|
||||
"(VK_KHR_copy_commands2)": [
|
||||
{
|
||||
"vuid": "VUID-VkBlitImageInfo2KHR-sType-sType",
|
||||
@ -20786,7 +20878,11 @@
|
||||
},
|
||||
{
|
||||
"vuid": "VUID-VkImageBlit2KHR-pNext-pNext",
|
||||
"text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
|
||||
"text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a>"
|
||||
},
|
||||
{
|
||||
"vuid": "VUID-VkImageBlit2KHR-sType-unique",
|
||||
"text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
|
||||
},
|
||||
{
|
||||
"vuid": "VUID-VkImageBlit2KHR-srcSubresource-parameter",
|
||||
@ -29732,7 +29828,7 @@
|
||||
"(VK_KHR_surface)+(VK_EXT_display_surface_counter)": [
|
||||
{
|
||||
"vuid": "VUID-VkSurfaceCapabilities2EXT-supportedSurfaceCounters-01246",
|
||||
"text": " <code>supportedSurfaceCounters</code> <strong class=\"purple\">must</strong> not include <code>VK_SURFACE_COUNTER_VBLANK_EXT</code> unless the surface queried is a <a href=\"#wsi-display-surfaces\">display surface</a>"
|
||||
"text": " <code>supportedSurfaceCounters</code> <strong class=\"purple\">must</strong> not include <code>VK_SURFACE_COUNTER_VBLANK_BIT_EXT</code> unless the surface queried is a <a href=\"#wsi-display-surfaces\">display surface</a>"
|
||||
},
|
||||
{
|
||||
"vuid": "VUID-VkSurfaceCapabilities2EXT-sType-sType",
|
||||
@ -30942,6 +31038,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"
|
||||
|
684
registry/vk.xml
684
registry/vk.xml
File diff suppressed because it is too large
Load Diff
Loading…
x
Reference in New Issue
Block a user