diff options
Diffstat (limited to 'registry')
-rw-r--r-- | registry/apiconventions.py | 12 | ||||
-rwxr-xr-x | registry/genvk.py | 244 | ||||
-rwxr-xr-x | registry/parse_dependency.py | 11 | ||||
-rw-r--r-- | registry/reg.py | 26 | ||||
-rw-r--r-- | registry/validusage.json | 1914 | ||||
-rw-r--r-- | registry/vk.xml | 24 | ||||
-rwxr-xr-x[-rw-r--r--] | registry/vkconventions.py | 19 |
7 files changed, 1827 insertions, 423 deletions
diff --git a/registry/apiconventions.py b/registry/apiconventions.py index 5d9eee4..d170dd4 100644 --- a/registry/apiconventions.py +++ b/registry/apiconventions.py @@ -8,4 +8,14 @@ # This import should be changed at the repository / working group level to # specify the correct API's conventions. -from vkconventions import VulkanConventions as APIConventions + +import os + +defaultAPI = 'vulkan' + +VulkanAPI = os.getenv('VULKAN_API', default=defaultAPI) + +if VulkanAPI == 'vulkansc': + from vkconventions import VulkanSCConventions as APIConventions +else: + from vkconventions import VulkanConventions as APIConventions diff --git a/registry/genvk.py b/registry/genvk.py index b31f167..98618c1 100755 --- a/registry/genvk.py +++ b/registry/genvk.py @@ -16,6 +16,12 @@ import xml.etree.ElementTree as etree sys.path.append(os.path.abspath(os.path.dirname(__file__))) from cgenerator import CGeneratorOptions, COutputGenerator +# Vulkan SC modules +from json_parser import JSONParserGenerator, JSONParserOptions +from schema_generator import SchemaGeneratorOptions, SchemaOutputGenerator +from json_generator import JSONGeneratorOptions, JSONOutputGenerator +from json_h_generator import JSONHeaderOutputGenerator, JSONHeaderGeneratorOptions +from json_c_generator import JSONCOutputGenerator, JSONCGeneratorOptions from docgenerator import DocGeneratorOptions, DocOutputGenerator from extensionmetadocgenerator import (ExtensionMetaDocGeneratorOptions, @@ -137,6 +143,8 @@ def makeGenOpts(args): '' ] + vulkanLayer = args.vulkanLayer + # Defaults for generating re-inclusion protection wrappers (or not) protectFile = protect @@ -151,6 +159,8 @@ def makeGenOpts(args): # APIs to merge mergeApiNames = args.mergeApiNames + isCTS = args.isCTS + # API include files for spec and ref pages # Overwrites include subdirectories in spec source tree # The generated include files do not include the calling convention @@ -426,6 +436,9 @@ def makeGenOpts(args): [ 'vulkan_metal.h', [ 'VK_EXT_metal_surface', 'VK_EXT_metal_objects' ], commonSuppressExtensions ], [ 'vulkan_screen.h', [ 'VK_QNX_screen_surface' ], commonSuppressExtensions ], + [ 'vulkan_sci.h', [ 'VK_NV_external_sci_sync', + 'VK_NV_external_sci_sync2', + 'VK_NV_external_memory_sci_buf'], commonSuppressExtensions ], [ 'vulkan_beta.h', betaRequireExtensions, betaSuppressExtensions ], ] @@ -509,6 +522,233 @@ def makeGenOpts(args): misracppstyle = misracppstyle) ] + # Vulkan versions to include for SC header - SC *removes* features from 1.0/1.1/1.2 + scVersions = makeREstring(['VK_VERSION_1_0', 'VK_VERSION_1_1', 'VK_VERSION_1_2', 'VKSC_VERSION_1_0']) + + genOpts['vulkan_sc_core.h'] = [ + COutputGenerator, + CGeneratorOptions( + conventions = conventions, + filename = 'vulkan_sc_core.h', + directory = directory, + apiname = 'vulkansc', + profile = None, + versions = scVersions, + emitversions = scVersions, + defaultExtensions = 'vulkansc', + addExtensions = addExtensionsPat, + removeExtensions = removeExtensionsPat, + emitExtensions = emitExtensionsPat, + prefixText = prefixStrings + vkPrefixStrings, + genFuncPointers = True, + protectFile = protectFile, + protectFeature = False, + protectProto = '#ifndef', + protectProtoStr = 'VK_NO_PROTOTYPES', + apicall = 'VKAPI_ATTR ', + apientry = 'VKAPI_CALL ', + apientryp = 'VKAPI_PTR *', + alignFuncParam = 48, + misracstyle = misracstyle, + misracppstyle = misracppstyle) + ] + + genOpts['vulkan_sc_core.hpp'] = [ + COutputGenerator, + CGeneratorOptions( + conventions = conventions, + filename = 'vulkan_sc_core.hpp', + directory = directory, + apiname = 'vulkansc', + profile = None, + versions = scVersions, + emitversions = scVersions, + defaultExtensions = 'vulkansc', + addExtensions = addExtensionsPat, + removeExtensions = removeExtensionsPat, + emitExtensions = emitExtensionsPat, + prefixText = prefixStrings + vkPrefixStrings, + genFuncPointers = True, + protectFile = protectFile, + protectFeature = False, + protectProto = '#ifndef', + protectProtoStr = 'VK_NO_PROTOTYPES', + apicall = 'VKAPI_ATTR ', + apientry = 'VKAPI_CALL ', + apientryp = 'VKAPI_PTR *', + alignFuncParam = 48, + misracstyle = misracstyle, + misracppstyle = misracppstyle) + ] + + genOpts['vk.json'] = [ + SchemaOutputGenerator, + SchemaGeneratorOptions( + conventions = conventions, + filename = 'vk.json', + directory = directory, + apiname = 'vulkansc', + profile = None, + versions = scVersions, + emitversions = scVersions, + defaultExtensions = 'vulkansc', + addExtensions = addExtensionsPat, + removeExtensions = removeExtensionsPat, + emitExtensions = emitExtensionsPat, + prefixText = prefixStrings + vkPrefixStrings, + genFuncPointers = True, + protectFile = protectFile, + protectFeature = False, + protectProto = '#ifndef', + protectProtoStr = 'VK_NO_PROTOTYPES', + apicall = 'VKAPI_ATTR ', + apientry = 'VKAPI_CALL ', + apientryp = 'VKAPI_PTR *', + alignFuncParam = 48) + ] + + if vulkanLayer: + genOpts['vulkan_json_data.hpp'] = [ + JSONOutputGenerator, + JSONGeneratorOptions( + conventions = conventions, + filename = 'vulkan_json_data.hpp', + directory = directory, + apiname = 'vulkan', + profile = None, + versions = featuresPat, + emitversions = featuresPat, + defaultExtensions = None, + addExtensions = addExtensionsPat, + removeExtensions = None, + emitExtensions = None, + vulkanLayer = vulkanLayer, + prefixText = prefixStrings + vkPrefixStrings, + genFuncPointers = True, + protectFile = protectFile, + protectFeature = False, + protectProto = '#ifndef', + protectProtoStr = 'VK_NO_PROTOTYPES', + apicall = 'VKAPI_ATTR ', + apientry = 'VKAPI_CALL ', + apientryp = 'VKAPI_PTR *', + alignFuncParam = 48) + ] + else: + genOpts['vulkan_json_data.hpp'] = [ + JSONOutputGenerator, + JSONGeneratorOptions( + conventions = conventions, + filename = 'vulkan_json_data.hpp', + directory = directory, + apiname = 'vulkansc', + profile = None, + versions = scVersions, + emitversions = scVersions, + defaultExtensions = 'vulkansc', + addExtensions = addExtensionsPat, + removeExtensions = removeExtensionsPat, + emitExtensions = emitExtensionsPat, + vulkanLayer = vulkanLayer, + prefixText = prefixStrings + vkPrefixStrings, + genFuncPointers = True, + protectFile = protectFile, + protectFeature = False, + protectProto = '#ifndef', + protectProtoStr = 'VK_NO_PROTOTYPES', + apicall = 'VKAPI_ATTR ', + apientry = 'VKAPI_CALL ', + apientryp = 'VKAPI_PTR *', + isCTS = isCTS, + alignFuncParam = 48) + ] + + # keep any relevant platform extensions for the following generators + # (needed for e.g. the vulkan_sci extensions) + explicitRemoveExtensionsPat = makeREstring( + removeExtensions, None, strings_are_regex=True) + + # Raw C header file generator. + genOpts['vulkan_json_gen.h'] = [ + JSONHeaderOutputGenerator, + JSONHeaderGeneratorOptions( + conventions = conventions, + filename = 'vulkan_json_gen.h', + directory = directory, + apiname = 'vulkansc', + profile = None, + versions = scVersions, + emitversions = scVersions, + defaultExtensions = 'vulkansc', + addExtensions = addExtensionsPat, + removeExtensions = explicitRemoveExtensionsPat, + emitExtensions = emitExtensionsPat, + prefixText = prefixStrings + vkPrefixStrings, + genFuncPointers = True, + protectFile = protectFile, + protectFeature = False, + protectProto = '#ifndef', + protectProtoStr = 'VK_NO_PROTOTYPES', + apicall = 'VKAPI_ATTR ', + apientry = 'VKAPI_CALL ', + apientryp = 'VKAPI_PTR *', + alignFuncParam = 48) + ] + + # Raw C source file generator. + genOpts['vulkan_json_gen.c'] = [ + JSONCOutputGenerator, + JSONCGeneratorOptions( + conventions = conventions, + filename = 'vulkan_json_gen.c', + directory = directory, + apiname = 'vulkansc', + profile = None, + versions = scVersions, + emitversions = scVersions, + defaultExtensions = 'vulkansc', + addExtensions = addExtensionsPat, + removeExtensions = explicitRemoveExtensionsPat, + emitExtensions = emitExtensionsPat, + prefixText = prefixStrings + vkPrefixStrings, + genFuncPointers = True, + protectFile = protectFile, + protectFeature = False, + protectProto = '#ifndef', + protectProtoStr = 'VK_NO_PROTOTYPES', + apicall = 'VKAPI_ATTR ', + apientry = 'VKAPI_CALL ', + apientryp = 'VKAPI_PTR *', + alignFuncParam = 48) + ] + + genOpts['vulkan_json_parser.hpp'] = [ + JSONParserGenerator, + JSONParserOptions( + conventions = conventions, + filename = 'vulkan_json_parser.hpp', + directory = directory, + apiname = 'vulkansc', + profile = None, + versions = scVersions, + emitversions = scVersions, + defaultExtensions = 'vulkansc', + addExtensions = addExtensionsPat, + removeExtensions = explicitRemoveExtensionsPat, + emitExtensions = emitExtensionsPat, + prefixText = prefixStrings + vkPrefixStrings, + genFuncPointers = True, + protectFile = protectFile, + protectFeature = False, + protectProto = '#ifndef', + protectProtoStr = 'VK_NO_PROTOTYPES', + apicall = 'VKAPI_ATTR ', + apientry = 'VKAPI_CALL ', + apientryp = 'VKAPI_PTR *', + isCTS = isCTS, + alignFuncParam = 48) + ] + # Unused - vulkan10.h target. # It is possible to generate a header with just the Vulkan 1.0 + # extension interfaces defined, but since the promoted KHR extensions @@ -787,10 +1027,14 @@ if __name__ == '__main__': help='Suppress script output during normal execution.') parser.add_argument('-verbose', action='store_false', dest='quiet', default=True, help='Enable script output during normal execution.') + parser.add_argument('--vulkanLayer', action='store_true', dest='vulkanLayer', + help='Enable scripts to generate VK specific vulkan_json_data.hpp for json_gen_layer.') parser.add_argument('-misracstyle', dest='misracstyle', action='store_true', help='generate MISRA C-friendly headers') parser.add_argument('-misracppstyle', dest='misracppstyle', action='store_true', help='generate MISRA C++-friendly headers') + parser.add_argument('--iscts', action='store_true', dest='isCTS', + help='Specify if this should generate CTS compatible code') args = parser.parse_args() diff --git a/registry/parse_dependency.py b/registry/parse_dependency.py index 433c2e3..63eeabc 100755 --- a/registry/parse_dependency.py +++ b/registry/parse_dependency.py @@ -65,7 +65,16 @@ def nameMarkup(name): major = match.group(1) minor = match.group(2) version = major + '.' + minor - return f'<<versions-{major}.{minor}, Version {version}>>' + + # Vulkan SC has a different anchor pattern for version appendices + scMatch = re.search("[A-Z]+SC_VERSION_([0-9]+)_([0-9]+)", name) + if scMatch is not None: + if version == '1.0': + return 'Vulkan SC 1.0' + else: + return f'<<versions-sc-{major}.{minor}, Version SC {version}>>' + else: + return f'<<versions-{major}.{minor}, Version {version}>>' else: return 'apiext:' + name diff --git a/registry/reg.py b/registry/reg.py index 9c2b11c..3ff580d 100644 --- a/registry/reg.py +++ b/registry/reg.py @@ -974,6 +974,7 @@ class Registry: self.markTypeRequired(typeElem.get('name'), required) for enumElem in feature.findall('enum'): self.markEnumRequired(enumElem.get('name'), required) + for cmdElem in feature.findall('command'): self.markCmdRequired(cmdElem.get('name'), required) @@ -1402,6 +1403,30 @@ class Registry: if stripped: eleminfo.elem.set(attribute, ','.join(apis)) + def stripUnsupportedAPIsFromList(self, dictionary, supportedDictionary): + """Strip unsupported APIs from attributes of APIs. + dictionary - dictionary of list of structure name strings + supportedDictionary - dictionary in which to look for supported + API elements in the attribute""" + + for key in dictionary: + attribstring = dictionary[key] + if attribstring is not None: + apis = [] + stripped = False + for api in attribstring: + ##print('Checking API {} referenced by {}'.format(api, key)) + if supportedDictionary[api].required: + apis.append(api) + else: + stripped = True + ##print('\t**STRIPPING API {} from {}'.format(api, key)) + + # Update the attribute after stripping stuff. + # Could sort apis before joining, but it is not a clear win + if stripped: + dictionary[key] = apis + def generateFormat(self, format, dictionary): if format is None: self.gen.logMsg('diag', 'No entry found for format element', @@ -1603,6 +1628,7 @@ class Registry: self.stripUnsupportedAPIs(self.typedict, 'structextends', self.typedict) self.stripUnsupportedAPIs(self.cmddict, 'successcodes', self.enumdict) self.stripUnsupportedAPIs(self.cmddict, 'errorcodes', self.enumdict) + self.stripUnsupportedAPIsFromList(self.validextensionstructs, self.typedict) # Construct lists of valid extension structures self.tagValidExtensionStructs() diff --git a/registry/validusage.json b/registry/validusage.json index 4b0aa1b..a8c619a 100644 --- a/registry/validusage.json +++ b/registry/validusage.json @@ -1,9 +1,9 @@ { "version info": { "schema version": 2, - "api version": "1.3.251", - "comment": "from git branch: github-main commit: 45b5ba66f8128be493745da2d45f0bb407d9296a", - "date": "2023-05-28 12:06:34Z" + "api version": "1.3.252", + "comment": "from git branch: github-main commit: 5718db0a370b5bd91e6cf2268a3dc2af9cfc15d1", + "date": "2023-06-02 12:04:26Z" }, "validation": { "vkGetInstanceProcAddr": { @@ -193,11 +193,25 @@ ] }, "VkApplicationInfo": { - "core": [ + "!(VKSC_VERSION_1_0)": [ { "vuid": "VUID-VkApplicationInfo-apiVersion-04010", "text": " If <code>apiVersion</code> is not <code>0</code>, then it <strong class=\"purple\">must</strong> be greater than or equal to <a href=\"#VK_API_VERSION_1_0\">VK_API_VERSION_1_0</a>" - }, + } + ], + "(VKSC_VERSION_1_0)": [ + { + "vuid": "VUID-VkApplicationInfo-apiVersion-05021", + "text": " If <code>apiVersion</code> is not <code>0</code> and its variant is <code>VKSC_API_VARIANT</code>, then it <strong class=\"purple\">must</strong> be greater than or equal to <code>VKSC_API_VERSION_1_0</code>" + } + ], + "(VK_EXT_application_parameters)": [ + { + "vuid": "VUID-VkApplicationInfo-key-05093", + "text": " The <code>key</code> value of each <code>VkApplicationParametersEXT</code> structure in the <a href=\"#VkApplicationInfo\">VkApplicationInfo</a>::<code>pNext</code> chain <strong class=\"purple\">must</strong> be unique for each <code>vendorID</code> and <code>deviceID</code> pairing" + } + ], + "core": [ { "vuid": "VUID-VkApplicationInfo-sType-sType", "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_APPLICATION_INFO</code>" @@ -223,14 +237,6 @@ "text": " All child objects created using <code>instance</code> <strong class=\"purple\">must</strong> have been destroyed prior to destroying <code>instance</code>" }, { - "vuid": "VUID-vkDestroyInstance-instance-00630", - "text": " If <code>VkAllocationCallbacks</code> were provided when <code>instance</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here" - }, - { - "vuid": "VUID-vkDestroyInstance-instance-00631", - "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>instance</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" - }, - { "vuid": "VUID-vkDestroyInstance-instance-parameter", "text": " If <code>instance</code> is not <code>NULL</code>, <code>instance</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkInstance\">VkInstance</a> handle" }, @@ -238,6 +244,16 @@ "vuid": "VUID-vkDestroyInstance-pAllocator-parameter", "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure" } + ], + "!(VKSC_VERSION_1_0)": [ + { + "vuid": "VUID-vkDestroyInstance-instance-00630", + "text": " If <code>VkAllocationCallbacks</code> were provided when <code>instance</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here" + }, + { + "vuid": "VUID-vkDestroyInstance-instance-00631", + "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>instance</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" + } ] }, "vkEnumeratePhysicalDevices": { @@ -562,6 +578,22 @@ "vuid": "VUID-vkCreateDevice-pDevice-parameter", "text": " <code>pDevice</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkDevice\">VkDevice</a> handle" } + ], + "(VK_EXT_application_parameters)": [ + { + "vuid": "VUID-vkCreateDevice-key-05092", + "text": " The <code>key</code> value of each <code>VkApplicationParametersEXT</code> structure in the <a href=\"#VkDeviceCreateInfo\">VkDeviceCreateInfo</a>::<code>pNext</code> chain <strong class=\"purple\">must</strong> be unique" + } + ], + "(VKSC_VERSION_1_0)": [ + { + "vuid": "VUID-vkCreateDevice-deviceMemoryRequestCount-05095", + "text": " The sum of <code>deviceMemoryRequestCount</code> over all <code>VkDeviceObjectReservationCreateInfo</code> structures <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceLimits\">VkPhysicalDeviceLimits</a>::<code>maxMemoryAllocationCount</code>" + }, + { + "vuid": "VUID-vkCreateDevice-samplerRequestCount-05096", + "text": " The sum of <code>samplerRequestCount</code> over all <code>VkDeviceObjectReservationCreateInfo</code> structures <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceLimits\">VkPhysicalDeviceLimits</a>::<code>maxSamplerAllocationCount</code>" + } ] }, "VkDeviceCreateInfo": { @@ -858,8 +890,38 @@ } ] }, + "VkDeviceObjectReservationCreateInfo": { + "(VKSC_VERSION_1_0)": [ + { + "vuid": "VUID-VkDeviceObjectReservationCreateInfo-maxImageViewArrayLayers-05014", + "text": " <code>maxImageViewArrayLayers</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceLimits\">VkPhysicalDeviceLimits</a>::<code>maxImageArrayLayers</code>" + }, + { + "vuid": "VUID-VkDeviceObjectReservationCreateInfo-maxImageViewMipLevels-05015", + "text": " <code>maxImageViewMipLevels</code> <strong class=\"purple\">must</strong> be less than or equal to the number of levels in the complete mipmap chain based on the maximum of <a href=\"#VkPhysicalDeviceLimits\">VkPhysicalDeviceLimits</a>::<code>maxImageDimension1D</code>, <code>maxImageDimension2D</code>, <code>maxImageDimension3D</code>, and <code>maxImageDimensionCube</code>" + }, + { + "vuid": "VUID-VkDeviceObjectReservationCreateInfo-maxLayeredImageViewMipLevels-05016", + "text": " <code>maxLayeredImageViewMipLevels</code> <strong class=\"purple\">must</strong> be less than or equal to the number of levels in the complete mipmap chain based on <a href=\"#VkPhysicalDeviceLimits\">VkPhysicalDeviceLimits</a>::<code>maxImageDimension1D</code>, <code>maxImageDimension2D</code>, <code>maxImageDimension3D</code>, and <code>maxImageDimensionCube</code>" + }, + { + "vuid": "VUID-VkDeviceObjectReservationCreateInfo-subpassDescriptionRequestCount-05017", + "text": " <code>subpassDescriptionRequestCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>renderPassRequestCount</code> multiplied by <code>VkPhysicalDeviceVulkanSC10Properties</code>::<code>maxRenderPassSubpasses</code>" + }, + { + "vuid": "VUID-VkDeviceObjectReservationCreateInfo-attachmentDescriptionRequestCount-05018", + "text": " <code>attachmentDescriptionRequestCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>renderPassRequestCount</code> multiplied by <code>VkPhysicalDeviceVulkanSC10Properties</code>::<code>maxFramebufferAttachments</code>" + } + ] + }, "vkDestroyDevice": { - "core": [ + "(VKSC_VERSION_1_0)": [ + { + "vuid": "VUID-vkDestroyDevice-device-05137", + "text": " All child objects created on <code>device</code>, except those with no explicit <a href=\"#fundamentals-objectmodel-no-destroy\">free or destroy command</a>, <strong class=\"purple\">must</strong> have been destroyed prior to destroying <code>device</code>" + } + ], + "!(VKSC_VERSION_1_0)": [ { "vuid": "VUID-vkDestroyDevice-device-00378", "text": " All child objects created on <code>device</code> <strong class=\"purple\">must</strong> have been destroyed prior to destroying <code>device</code>" @@ -871,7 +933,9 @@ { "vuid": "VUID-vkDestroyDevice-device-00380", "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>device</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" - }, + } + ], + "core": [ { "vuid": "VUID-vkDestroyDevice-device-parameter", "text": " If <code>device</code> is not <code>NULL</code>, <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" @@ -1034,6 +1098,12 @@ "vuid": "VUID-vkCreateCommandPool-pCommandPool-parameter", "text": " <code>pCommandPool</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkCommandPool\">VkCommandPool</a> handle" } + ], + "(VKSC_VERSION_1_0)": [ + { + "vuid": "VUID-vkCreateCommandPool-device-05068", + "text": " The number of {objectnameplural} currently allocated from <code>device</code> plus {objectcount} <strong class=\"purple\">must</strong> be less than or equal to the total number of {objectnameplural} requested via <code>VkDeviceObjectReservationCreateInfo</code>::pname:{objectnamecamelcase}RequestCount specified when <code>device</code> was created" + } ] }, "VkCommandPoolCreateInfo": { @@ -1043,6 +1113,12 @@ "text": " If the <a href=\"#features-protectedMemory\"><code>protectedMemory</code></a> feature is not enabled, the <code>VK_COMMAND_POOL_CREATE_PROTECTED_BIT</code> bit of <code>flags</code> <strong class=\"purple\">must</strong> not be set" } ], + "(VKSC_VERSION_1_0)": [ + { + "vuid": "VUID-VkCommandPoolCreateInfo-pNext-05002", + "text": " The <code>pNext</code> chain <strong class=\"purple\">must</strong> include a <code>VkCommandPoolMemoryReservationCreateInfo</code> structure" + } + ], "core": [ { "vuid": "VUID-VkCommandPoolCreateInfo-sType-sType", @@ -1058,8 +1134,28 @@ } ] }, + "VkCommandPoolMemoryReservationCreateInfo": { + "(VKSC_VERSION_1_0)": [ + { + "vuid": "VUID-VkCommandPoolMemoryReservationCreateInfo-commandPoolReservedSize-05003", + "text": " <code>commandPoolReservedSize</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" + }, + { + "vuid": "VUID-VkCommandPoolMemoryReservationCreateInfo-commandPoolMaxCommandBuffers-05004", + "text": " <code>commandPoolMaxCommandBuffers</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" + }, + { + "vuid": "VUID-VkCommandPoolMemoryReservationCreateInfo-commandPoolMaxCommandBuffers-05090", + "text": " <code>commandPoolMaxCommandBuffers</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceVulkanSC10Properties</code>::<code>maxCommandPoolCommandBuffers</code>" + }, + { + "vuid": "VUID-VkCommandPoolMemoryReservationCreateInfo-commandPoolMaxCommandBuffers-05074", + "text": " The number of command buffers reserved by all command pools plus <code>commandPoolMaxCommandBuffers</code> <strong class=\"purple\">must</strong> be less than or equal to the total number of command buffers requested via <code>VkDeviceObjectReservationCreateInfo</code>::<code>commandBufferRequestCount</code>" + } + ] + }, "vkTrimCommandPool": { - "(VK_VERSION_1_1,VK_KHR_maintenance1)": [ + "!(VKSC_VERSION_1_0)+(VK_VERSION_1_1,VK_KHR_maintenance1)": [ { "vuid": "VUID-vkTrimCommandPool-device-parameter", "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" @@ -1100,10 +1196,16 @@ "vuid": "VUID-vkResetCommandPool-commandPool-parent", "text": " <code>commandPool</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" } + ], + "(VKSC_VERSION_1_0)": [ + { + "vuid": "VUID-vkResetCommandPool-flags-05005", + "text": " <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT</code>" + } ] }, "vkDestroyCommandPool": { - "core": [ + "!(VKSC_VERSION_1_0)": [ { "vuid": "VUID-vkDestroyCommandPool-commandPool-00041", "text": " All <code>VkCommandBuffer</code> objects allocated from <code>commandPool</code> <strong class=\"purple\">must</strong> not be in the <a href=\"#commandbuffers-lifecycle\">pending state</a>" @@ -1155,6 +1257,12 @@ ] }, "VkCommandBufferAllocateInfo": { + "(VKSC_VERSION_1_0)": [ + { + "vuid": "VUID-VkCommandBufferAllocateInfo-commandPool-05006", + "text": " The number of command buffers currently allocated from <code>commandPool</code> plus <code>commandBufferCount</code> <strong class=\"purple\">must</strong> be less than or equal to the value of <code>VkCommandPoolMemoryReservationCreateInfo</code>::<code>commandPoolMaxCommandBuffers</code> specified when <code>commandPool</code> was created" + } + ], "core": [ { "vuid": "VUID-VkCommandBufferAllocateInfo-sType-sType", @@ -1192,6 +1300,12 @@ "vuid": "VUID-vkResetCommandBuffer-flags-parameter", "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkCommandBufferResetFlagBits\">VkCommandBufferResetFlagBits</a> values" } + ], + "(VKSC_VERSION_1_0)": [ + { + "vuid": "VUID-vkResetCommandBuffer-commandPoolResetCommandBuffer-05135", + "text": " <a href=\"#limits-commandPoolResetCommandBuffer\"><code>commandPoolResetCommandBuffer</code></a> <strong class=\"purple\">must</strong> be supported" + } ] }, "vkFreeCommandBuffers": { @@ -1256,6 +1370,20 @@ "vuid": "VUID-vkBeginCommandBuffer-pBeginInfo-parameter", "text": " <code>pBeginInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkCommandBufferBeginInfo\">VkCommandBufferBeginInfo</a> structure" } + ], + "(VKSC_VERSION_1_0)": [ + { + "vuid": "VUID-vkBeginCommandBuffer-commandPoolResetCommandBuffer-05136", + "text": " If <a href=\"#limits-commandPoolResetCommandBuffer\"><code>commandPoolResetCommandBuffer</code></a> is not supported, <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">initial state</a>" + }, + { + "vuid": "VUID-vkBeginCommandBuffer-commandPoolMultipleCommandBuffersRecording-05007", + "text": " If <a href=\"#limits-commandPoolMultipleCommandBuffersRecording\"><code>commandPoolMultipleCommandBuffersRecording</code></a> is <code>VK_FALSE</code>, then the command pool that <code>commandBuffer</code> was created from <strong class=\"purple\">must</strong> have no other command buffers in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" + }, + { + "vuid": "VUID-vkBeginCommandBuffer-commandBufferSimultaneousUse-05008", + "text": " If <a href=\"#limits-commandBufferSimultaneousUse\"><code>commandBufferSimultaneousUse</code></a> is <code>VK_FALSE</code>, then <code>pBeginInfo->flags</code> <strong class=\"purple\">must</strong> not include <code>VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT</code>" + } ] }, "VkCommandBufferBeginInfo": { @@ -1269,26 +1397,20 @@ "text": " If <code>flags</code> contains <code>VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT</code>, the <code>subpass</code> member of <code>pInheritanceInfo</code> <strong class=\"purple\">must</strong> be a valid subpass index within the <code>renderPass</code> member of <code>pInheritanceInfo</code>" } ], - "core": [ + "!(VKSC_VERSION_1_0)": [ { "vuid": "VUID-VkCommandBufferBeginInfo-flags-00055", "text": " If <code>flags</code> contains <code>VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT</code>, the <code>framebuffer</code> member of <code>pInheritanceInfo</code> <strong class=\"purple\">must</strong> be either <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, or a valid <code>VkFramebuffer</code> that is compatible with the <code>renderPass</code> member of <code>pInheritanceInfo</code>" - }, - { - "vuid": "VUID-VkCommandBufferBeginInfo-sType-sType", - "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO</code>" - }, - { - "vuid": "VUID-VkCommandBufferBeginInfo-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=\"#VkDeviceGroupCommandBufferBeginInfo\">VkDeviceGroupCommandBufferBeginInfo</a>" - }, + } + ], + "(VKSC_VERSION_1_0)": [ { - "vuid": "VUID-VkCommandBufferBeginInfo-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-VkCommandBufferBeginInfo-flags-05009", + "text": " If <code>flags</code> contains <code>VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT</code> and <code>secondaryCommandBufferNullOrImagelessFramebuffer</code> is <code>VK_TRUE</code>, the <code>framebuffer</code> member of <code>pInheritanceInfo</code> <strong class=\"purple\">must</strong> be either <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, or a valid <code>VkFramebuffer</code> that is compatible with the <code>renderPass</code> member of <code>pInheritanceInfo</code>" }, { - "vuid": "VUID-VkCommandBufferBeginInfo-flags-parameter", - "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkCommandBufferUsageFlagBits\">VkCommandBufferUsageFlagBits</a> values" + "vuid": "VUID-VkCommandBufferBeginInfo-flags-05010", + "text": " If <code>flags</code> contains <code>VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT</code> and <code>secondaryCommandBufferNullOrImagelessFramebuffer</code> is <code>VK_FALSE</code>, the <code>framebuffer</code> member of <code>pInheritanceInfo</code> <strong class=\"purple\">must</strong> be a valid <code>VkFramebuffer</code> that is compatible with the <code>renderPass</code> member of <code>pInheritanceInfo</code> and <strong class=\"purple\">must</strong> not have been created with a <a href=\"#VkFramebufferCreateInfo\">VkFramebufferCreateInfo</a>::<code>flags</code> value that includes <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>" } ], "(VK_VERSION_1_3,VK_KHR_dynamic_rendering)": [ @@ -1310,6 +1432,24 @@ "vuid": "VUID-VkCommandBufferBeginInfo-flags-06003", "text": " If <code>flags</code> contains <code>VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT</code>, the <code>renderPass</code> member of <code>pInheritanceInfo</code> is <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>pNext</code> chain of <code>pInheritanceInfo</code> includes a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, the <code>colorAttachmentCount</code> member of that structure <strong class=\"purple\">must</strong> be equal to the value of <a href=\"#VkCommandBufferInheritanceRenderingInfo\">VkCommandBufferInheritanceRenderingInfo</a>::<code>colorAttachmentCount</code>" } + ], + "core": [ + { + "vuid": "VUID-VkCommandBufferBeginInfo-sType-sType", + "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO</code>" + }, + { + "vuid": "VUID-VkCommandBufferBeginInfo-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=\"#VkDeviceGroupCommandBufferBeginInfo\">VkDeviceGroupCommandBufferBeginInfo</a>" + }, + { + "vuid": "VUID-VkCommandBufferBeginInfo-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-VkCommandBufferBeginInfo-flags-parameter", + "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkCommandBufferUsageFlagBits\">VkCommandBufferUsageFlagBits</a> values" + } ] }, "VkCommandBufferInheritanceInfo": { @@ -1828,6 +1968,12 @@ "vuid": "VUID-VkSemaphoreSubmitInfo-device-03889", "text": " If the <code>device</code> that <code>semaphore</code> was created on is a device group, <code>deviceIndex</code> <strong class=\"purple\">must</strong> be a valid device index" } + ], + "(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_NV_external_sci_sync,VK_NV_external_sci_sync2)": [ + { + "vuid": "VUID-VkSemaphoreSubmitInfoKHR-semaphore-05094", + "text": " If <code>semaphore</code> has a payload of <code>NvSciSyncObj</code>, <code>value</code> <strong class=\"purple\">must</strong> be calculated by application via <a href=\"#NvSciSync-extension-page\">NvSciSync APIs</a>." + } ] }, "VkCommandBufferSubmitInfo": { @@ -2603,6 +2749,18 @@ ] }, "vkCreateFence": { + "(VKSC_VERSION_1_0,VK_NV_external_sci_sync,VK_NV_external_sci_sync2)+(VKSC_VERSION_1_0)": [ + { + "vuid": "VUID-vkCreateFence-device-05068", + "text": " The number of {objectnameplural} currently allocated from <code>device</code> plus {objectcount} <strong class=\"purple\">must</strong> be less than or equal to the total number of {objectnameplural} requested via <code>VkDeviceObjectReservationCreateInfo</code>::pname:{objectnamecamelcase}RequestCount specified when <code>device</code> was created" + } + ], + "(VKSC_VERSION_1_0,VK_NV_external_sci_sync,VK_NV_external_sci_sync2)+(VK_NV_external_sci_sync,VK_NV_external_sci_sync2)": [ + { + "vuid": "VUID-vkCreateFence-pNext-05106", + "text": " If the <code>pNext</code> chain of <a href=\"#VkFenceCreateInfo\">VkFenceCreateInfo</a> includes <code>VkExportFenceSciSyncInfoNV</code>, then <a href=\"#VkFenceCreateInfo\">VkFenceCreateInfo</a>::<code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_FENCE_CREATE_SIGNALED_BIT</code>" + } + ], "core": [ { "vuid": "VUID-vkCreateFence-device-parameter", @@ -2656,6 +2814,12 @@ "vuid": "VUID-VkExportFenceCreateInfo-handleTypes-parameter", "text": " <code>handleTypes</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkExternalFenceHandleTypeFlagBits\">VkExternalFenceHandleTypeFlagBits</a> values" } + ], + "(VK_VERSION_1_1,VK_KHR_external_fence)+(VK_NV_external_sci_sync,VK_NV_external_sci_sync2)": [ + { + "vuid": "VUID-VkExportFenceCreateInfo-pNext-05107", + "text": " If the <code>pNext</code> chain includes a <code>VkExportFenceSciSyncInfoNV</code> structure, <code>VkPhysicalDeviceExternalSciSyncFeaturesNV</code>::<code>sciSyncFence</code> and <code>VkPhysicalDeviceExternalSciSyncFeaturesNV</code>::<code>sciSyncExport</code>, or <code>VkPhysicalDeviceExternalSciSync2FeaturesNV</code>::<code>sciSyncFence</code> and <code>VkPhysicalDeviceExternalSciSync2FeaturesNV</code>::<code>sciSyncExport</code> <strong class=\"purple\">must</strong> be enabled" + } ] }, "VkExportFenceWin32HandleInfoKHR": { @@ -2782,19 +2946,59 @@ } ] }, - "vkDestroyFence": { - "core": [ + "VkExportFenceSciSyncInfoNV": { + "(VK_NV_external_sci_sync,VK_NV_external_sci_sync2)": [ { - "vuid": "VUID-vkDestroyFence-fence-01120", - "text": " All <a href=\"#devsandqueues-submission\">queue submission</a> commands that refer to <code>fence</code> <strong class=\"purple\">must</strong> have completed execution" + "vuid": "VUID-VkExportFenceSciSyncInfoNV-pAttributes-05108", + "text": " <code>pAttributes</code> <strong class=\"purple\">must</strong> be a reconciled <code>NvSciSyncAttrList</code>" + } + ] + }, + "vkGetPhysicalDeviceSciSyncAttributesNV": { + "(VK_NV_external_sci_sync,VK_NV_external_sci_sync2)": [ + { + "vuid": "VUID-vkGetPhysicalDeviceSciSyncAttributesNV-pSciSyncAttributesInfo-05109", + "text": " If <code>pSciSyncAttributesInfo->primitiveType</code> is <code>VK_SCI_SYNC_PRIMITIVE_TYPE_FENCE_NV</code> then <code>VkPhysicalDeviceExternalSciSyncFeaturesNV</code>::<code>sciSyncFence</code> or <code>VkPhysicalDeviceExternalSciSync2FeaturesNV</code>::<code>sciSyncFence</code> <strong class=\"purple\">must</strong> be enabled" }, { - "vuid": "VUID-vkDestroyFence-fence-01121", - "text": " If <code>VkAllocationCallbacks</code> were provided when <code>fence</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here" + "vuid": "VUID-vkGetPhysicalDeviceSciSyncAttributesNV-pSciSyncAttributesInfo-05110", + "text": " If <code>pSciSyncAttributesInfo->primitiveType</code> is <code>VK_SCI_SYNC_PRIMITIVE_TYPE_SEMAPHORE_NV</code> then <code>VkPhysicalDeviceExternalSciSyncFeaturesNV</code>::<code>sciSyncSemaphore</code> or <code>VkPhysicalDeviceExternalSciSync2FeaturesNV</code>::<code>sciSyncSemaphore2</code> <strong class=\"purple\">must</strong> be enabled" }, { - "vuid": "VUID-vkDestroyFence-fence-01122", - "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>fence</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" + "vuid": "VUID-vkGetPhysicalDeviceSciSyncAttributesNV-pAttributes-05111", + "text": " <code>pAttributes</code> <strong class=\"purple\">must</strong> be a valid <code>NvSciSyncAttrList</code> and <strong class=\"purple\">must</strong> not be <code>NULL</code>" + } + ] + }, + "vkGetFenceSciSyncFenceNV": { + "(VK_NV_external_sci_sync,VK_NV_external_sci_sync2)": [ + { + "vuid": "VUID-vkGetFenceSciSyncFenceNV-pGetSciSyncHandleInfo-05112", + "text": " <code>pGetSciSyncHandleInfo->handleType</code> <strong class=\"purple\">must</strong> be <code>VK_EXTERNAL_FENCE_HANDLE_TYPE_SCI_SYNC_FENCE_BIT_NV</code>" + }, + { + "vuid": "VUID-vkGetFenceSciSyncFenceNV-sciSyncFence-05113", + "text": " <code>VkPhysicalDeviceExternalSciSyncFeaturesNV</code>::<code>sciSyncFence</code> or <code>VkPhysicalDeviceExternalSciSync2FeaturesNV</code>::<code>sciSyncFence</code> <strong class=\"purple\">must</strong> be enabled" + } + ] + }, + "vkGetFenceSciSyncObjNV": { + "(VK_NV_external_sci_sync,VK_NV_external_sci_sync2)": [ + { + "vuid": "VUID-vkGetFenceSciSyncObjNV-pGetSciSyncHandleInfo-05114", + "text": " <code>pGetSciSyncHandleInfo->handleType</code> <strong class=\"purple\">must</strong> be <code>VK_EXTERNAL_FENCE_HANDLE_TYPE_SCI_SYNC_OBJ_BIT_NV</code>" + }, + { + "vuid": "VUID-vkGetFenceSciSyncObjNV-sciSyncFence-05115", + "text": " <code>VkPhysicalDeviceExternalSciSyncFeaturesNV</code>::<code>sciSyncFence</code> or <code>VkPhysicalDeviceExternalSciSync2FeaturesNV</code>::<code>sciSyncFence</code> <strong class=\"purple\">must</strong> be enabled" + } + ] + }, + "vkDestroyFence": { + "core": [ + { + "vuid": "VUID-vkDestroyFence-fence-01120", + "text": " All <a href=\"#devsandqueues-submission\">queue submission</a> commands that refer to <code>fence</code> <strong class=\"purple\">must</strong> have completed execution" }, { "vuid": "VUID-vkDestroyFence-device-parameter", @@ -2812,6 +3016,16 @@ "vuid": "VUID-vkDestroyFence-fence-parent", "text": " If <code>fence</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" } + ], + "!(VKSC_VERSION_1_0)": [ + { + "vuid": "VUID-vkDestroyFence-fence-01121", + "text": " If <code>VkAllocationCallbacks</code> were provided when <code>fence</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here" + }, + { + "vuid": "VUID-vkDestroyFence-fence-01122", + "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>fence</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" + } ] }, "vkGetFenceStatus": { @@ -3070,7 +3284,45 @@ } ] }, + "vkImportFenceSciSyncFenceNV": { + "(VK_NV_external_sci_sync,VK_NV_external_sci_sync2)": [ + { + "vuid": "VUID-vkImportFenceSciSyncFenceNV-sciSyncImport-05140", + "text": " <code>VkPhysicalDeviceExternalSciSyncFeaturesNV</code>::<code>sciSyncImport</code> and <code>VkPhysicalDeviceExternalSciSyncFeaturesNV</code>::<code>sciSyncFence</code>, or <code>VkPhysicalDeviceExternalSciSync2FeaturesNV</code>::<code>sciSyncImport</code> and <code>VkPhysicalDeviceExternalSciSync2FeaturesNV</code>::<code>sciSyncFence</code> <strong class=\"purple\">must</strong> be enabled" + }, + { + "vuid": "VUID-vkImportFenceSciSyncFenceNV-fence-05141", + "text": " <code>fence</code> <strong class=\"purple\">must</strong> not be associated with any queue command that has not yet completed execution on that queue" + }, + { + "vuid": "VUID-vkImportFenceSciSyncFenceNV-pImportFenceSciSyncInfo-05142", + "text": " <code>pImportFenceSciSyncInfo->handleType</code> <strong class=\"purple\">must</strong> be <code>VK_EXTERNAL_FENCE_HANDLE_TYPE_SCI_SYNC_FENCE_BIT_NV</code>" + } + ] + }, + "vkImportFenceSciSyncObjNV": { + "(VK_NV_external_sci_sync,VK_NV_external_sci_sync2)": [ + { + "vuid": "VUID-vkImportFenceSciSyncObjNV-sciSyncImport-05143", + "text": " <code>VkPhysicalDeviceExternalSciSyncFeaturesNV</code>::<code>sciSyncImport</code> and <code>VkPhysicalDeviceExternalSciSyncFeaturesNV</code>::<code>sciSyncFence</code>, or <code>VkPhysicalDeviceExternalSciSync2FeaturesNV</code>::<code>sciSyncImport</code> and <code>VkPhysicalDeviceExternalSciSync2FeaturesNV</code>::<code>sciSyncFence</code> <strong class=\"purple\">must</strong> be enabled" + }, + { + "vuid": "VUID-vkImportFenceSciSyncObjNV-fence-05144", + "text": " <code>fence</code> <strong class=\"purple\">must</strong> not be associated with any queue command that has not yet completed execution on that queue" + }, + { + "vuid": "VUID-vkImportFenceSciSyncObjNV-pImportFenceSciSyncInfo-05145", + "text": " <code>pImportFenceSciSyncInfo->handleType</code> <strong class=\"purple\">must</strong> be <code>VK_EXTERNAL_FENCE_HANDLE_TYPE_SCI_SYNC_OBJ_BIT_NV</code>" + } + ] + }, "vkCreateSemaphore": { + "(VKSC_VERSION_1_0)+(VKSC_VERSION_1_0)": [ + { + "vuid": "VUID-vkCreateSemaphore-device-05068", + "text": " The number of {objectnameplural} currently allocated from <code>device</code> plus {objectcount} <strong class=\"purple\">must</strong> be less than or equal to the total number of {objectnameplural} requested via <code>VkDeviceObjectReservationCreateInfo</code>::pname:{objectnamecamelcase}RequestCount specified when <code>device</code> was created" + } + ], "core": [ { "vuid": "VUID-vkCreateSemaphore-device-parameter", @@ -3091,12 +3343,24 @@ ] }, "VkSemaphoreCreateInfo": { - "(VK_EXT_metal_objects)": [ + "(VK_EXT_metal_objects,VK_NV_external_sci_sync,VK_NV_external_sci_sync2)+(VK_EXT_metal_objects)": [ { "vuid": "VUID-VkSemaphoreCreateInfo-pNext-06789", "text": " If the <code>pNext</code> chain includes a <a href=\"#VkExportMetalObjectCreateInfoEXT\">VkExportMetalObjectCreateInfoEXT</a> structure, its <code>exportObjectType</code> member <strong class=\"purple\">must</strong> be <code>VK_EXPORT_METAL_OBJECT_TYPE_METAL_SHARED_EVENT_BIT_EXT</code>" } ], + "(VK_EXT_metal_objects,VK_NV_external_sci_sync,VK_NV_external_sci_sync2)+(VK_NV_external_sci_sync)": [ + { + "vuid": "VUID-VkSemaphoreCreateInfo-pNext-05118", + "text": " If the <code>pNext</code> chain includes <code>VkExportSemaphoreSciSyncInfoNV</code>, it <strong class=\"purple\">must</strong> also include <a href=\"#VkSemaphoreTypeCreateInfo\">VkSemaphoreTypeCreateInfo</a> with a <a href=\"#VkSemaphoreTypeCreateInfo\">VkSemaphoreTypeCreateInfo</a>::<code>semaphoreType</code> of <code>VK_SEMAPHORE_TYPE_TIMELINE</code>" + } + ], + "(VK_EXT_metal_objects,VK_NV_external_sci_sync,VK_NV_external_sci_sync2)+(VK_NV_external_sci_sync2)": [ + { + "vuid": "VUID-VkSemaphoreCreateInfo-pNext-05146", + "text": " If the <code>pNext</code> chain includes <code>VkSemaphoreSciSyncCreateInfoNV</code>, it <strong class=\"purple\">must</strong> also include <a href=\"#VkSemaphoreTypeCreateInfo\">VkSemaphoreTypeCreateInfo</a> with a <a href=\"#VkSemaphoreTypeCreateInfo\">VkSemaphoreTypeCreateInfo</a>::<code>semaphoreType</code> of <code>VK_SEMAPHORE_TYPE_TIMELINE</code>" + } + ], "core": [ { "vuid": "VUID-VkSemaphoreCreateInfo-sType-sType", @@ -3134,6 +3398,12 @@ "vuid": "VUID-VkSemaphoreTypeCreateInfo-semaphoreType-parameter", "text": " <code>semaphoreType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSemaphoreType\">VkSemaphoreType</a> value" } + ], + "(VK_VERSION_1_2,VK_KHR_timeline_semaphore)+(VK_NV_external_sci_sync)": [ + { + "vuid": "VUID-VkSemaphoreTypeCreateInfo-pNext-05119", + "text": " If the <code>pNext</code> chain includes <code>VkExportSemaphoreSciSyncInfoNV</code>, <code>initialValue</code> <strong class=\"purple\">must</strong> be zero." + } ] }, "VkExportSemaphoreCreateInfo": { @@ -3150,6 +3420,12 @@ "vuid": "VUID-VkExportSemaphoreCreateInfo-handleTypes-parameter", "text": " <code>handleTypes</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkExternalSemaphoreHandleTypeFlagBits\">VkExternalSemaphoreHandleTypeFlagBits</a> values" } + ], + "(VK_VERSION_1_1,VK_KHR_external_semaphore)+(VK_NV_external_sci_sync)": [ + { + "vuid": "VUID-VkExportSemaphoreCreateInfo-pNext-05120", + "text": " If the <code>pNext</code> chain includes a <code>VkExportSemaphoreSciSyncInfoNV</code> structure, <code>VkPhysicalDeviceExternalSciSyncFeaturesNV</code>::<code>sciSyncSemapore</code> and <code>VkPhysicalDeviceExternalSciSyncFeaturesNV</code>::<code>sciSyncExport</code> <strong class=\"purple\">must</strong> be enabled" + } ] }, "VkExportSemaphoreWin32HandleInfoKHR": { @@ -3366,12 +3642,60 @@ } ] }, + "VkExportSemaphoreSciSyncInfoNV": { + "(VK_NV_external_sci_sync)": [ + { + "vuid": "VUID-VkExportSemaphoreSciSyncInfoNV-pAttributes-05121", + "text": " <code>pAttributes</code> <strong class=\"purple\">must</strong> be a reconciled <code>NvSciSyncAttrList</code>" + } + ] + }, + "vkGetSemaphoreSciSyncObjNV": { + "(VK_NV_external_sci_sync)": [ + { + "vuid": "VUID-vkGetSemaphoreSciSyncObjNV-sciSyncSemaphore-05147", + "text": " <code>VkPhysicalDeviceExternalSciSyncFeaturesNV</code>::<code>sciSyncSemaphore</code> <strong class=\"purple\">must</strong> be enabled" + } + ] + }, + "VkSemaphoreGetSciSyncInfoNV": { + "(VK_NV_external_sci_sync)": [ + { + "vuid": "VUID-VkSemaphoreGetSciSyncInfoNV-handleType-05122", + "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be <code>VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SCI_SYNC_OBJ_BIT_NV</code>" + }, + { + "vuid": "VUID-VkSemaphoreGetSciSyncInfoNV-semaphore-05123", + "text": " <code>semaphore</code> <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkSemaphoreType\">VkSemaphoreType</a> of <code>VK_SEMAPHORE_TYPE_TIMELINE</code>" + }, + { + "vuid": "VUID-VkSemaphoreGetSciSyncInfoNV-semaphore-05129", + "text": " <code>semaphore</code> <strong class=\"purple\">must</strong> have been created with <code>VkExportSemaphoreSciSyncInfoNV</code> included <code>pNext</code> chain of <a href=\"#VkSemaphoreCreateInfo\">VkSemaphoreCreateInfo</a>, or previously imported by <code>vkImportSemaphoreSciSyncObjNV</code>" + } + ] + }, + "VkSemaphoreSciSyncCreateInfoNV": { + "(VK_NV_external_sci_sync2)": [ + { + "vuid": "VUID-VkSemaphoreSciSyncCreateInfoNV-sciSyncSemaphore2-05148", + "text": " The <a href=\"#features-sciSyncSemaphore2\"><code>VkPhysicalDeviceExternalSciSync2FeaturesNV</code>::<code>sciSyncSemaphore2</code></a> feature <strong class=\"purple\">must</strong> be enabled" + } + ] + }, "vkDestroySemaphore": { - "core": [ + "!(VK_NV_external_sci_sync2)": [ { "vuid": "VUID-vkDestroySemaphore-semaphore-01137", "text": " All submitted batches that refer to <code>semaphore</code> <strong class=\"purple\">must</strong> have completed execution" - }, + } + ], + "(VK_NV_external_sci_sync2)": [ + { + "vuid": "VUID-vkDestroySemaphore-semaphore-05149", + "text": " If <code>semaphore</code> was not created with <code>VkSemaphoreSciSyncCreateInfoNV</code> present in the <a href=\"#VkSemaphoreCreateInfo\">VkSemaphoreCreateInfo</a>::<code>pNext</code> chain when it was created, all submitted batches that refer to <code>semaphore</code> <strong class=\"purple\">must</strong> have completed execution" + } + ], + "!(VKSC_VERSION_1_0)": [ { "vuid": "VUID-vkDestroySemaphore-semaphore-01138", "text": " If <code>VkAllocationCallbacks</code> were provided when <code>semaphore</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here" @@ -3379,7 +3703,9 @@ { "vuid": "VUID-vkDestroySemaphore-semaphore-01139", "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>semaphore</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" - }, + } + ], + "core": [ { "vuid": "VUID-vkDestroySemaphore-device-parameter", "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" @@ -3398,6 +3724,40 @@ } ] }, + "vkCreateSemaphoreSciSyncPoolNV": { + "(VK_NV_external_sci_sync2)+(VKSC_VERSION_1_0)": [ + { + "vuid": "VUID-vkCreateSemaphoreSciSyncPoolNV-device-05150", + "text": " The number of semaphore pools currently allocated from <code>device</code> plus 1 <strong class=\"purple\">must</strong> be less than or equal to the total number of semaphore pools requested via <code>VkDeviceSemaphoreSciSyncPoolReservationCreateInfoNV</code>::<code>semaphoreSciSyncPoolRequestCount</code> specified when <code>device</code> was created" + } + ], + "(VK_NV_external_sci_sync2)": [ + { + "vuid": "VUID-vkCreateSemaphoreSciSyncPoolNV-sciSyncSemaphore2-05151", + "text": " The <a href=\"#features-sciSyncSemaphore2\"><code>VkPhysicalDeviceExternalSciSync2FeaturesNV</code>::<code>sciSyncSemaphore2</code></a> feature <strong class=\"purple\">must</strong> be enabled" + } + ] + }, + "VkSemaphoreSciSyncPoolCreateInfoNV": { + "(VK_NV_external_sci_sync2)": [ + { + "vuid": "VUID-VkSemaphoreSciSyncPoolCreateInfoNV-handle-05152", + "text": " <code>handle</code> <strong class=\"purple\">must</strong> be a valid <code>NvSciSyncObj</code>" + } + ] + }, + "vkDestroySemaphoreSciSyncPoolNV": { + "(VK_NV_external_sci_sync2)+!(VKSC_VERSION_1_0)": [ + { + "vuid": "VUID-vkDestroySemaphoreSciSyncPoolNV-semaphorePool-05153", + "text": " All submitted batches that refer to a semaphore created from <code>semaphorePool</code> <strong class=\"purple\">must</strong> have completed execution" + }, + { + "vuid": "VUID-vkDestroySemaphoreSciSyncPoolNV-sciSyncSemaphore2-05154", + "text": " The <a href=\"#features-sciSyncSemaphore2\"><code>VkPhysicalDeviceExternalSciSync2FeaturesNV</code>::<code>sciSyncSemaphore2</code></a> feature <strong class=\"purple\">must</strong> be enabled" + } + ] + }, "vkGetSemaphoreCounterValue": { "(VK_VERSION_1_2,VK_KHR_timeline_semaphore)": [ { @@ -3464,6 +3824,12 @@ "vuid": "VUID-VkSemaphoreWaitInfo-semaphoreCount-arraylength", "text": " <code>semaphoreCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" } + ], + "(VK_VERSION_1_2,VK_KHR_timeline_semaphore)+(VK_NV_external_sci_sync,VK_NV_external_sci_sync2)": [ + { + "vuid": "VUID-VkSemaphoreWaitInfo-pSemaphores-05124", + "text": " If any of the semaphores in <code>pSemaphores</code> have <code>NvSciSyncObj</code> as payload, application <strong class=\"purple\">must</strong> calculate the corresponding timeline semaphore values in <code>pValues</code> by calling <a href=\"#NvSciSync2-extension-page\">NvSciSync APIs</a>." + } ] }, "vkSignalSemaphore": { @@ -3508,6 +3874,12 @@ "vuid": "VUID-VkSemaphoreSignalInfo-semaphore-parameter", "text": " <code>semaphore</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSemaphore\">VkSemaphore</a> handle" } + ], + "(VK_VERSION_1_2,VK_KHR_timeline_semaphore)+(VK_NV_external_sci_sync,VK_NV_external_sci_sync2)": [ + { + "vuid": "VUID-VkSemaphoreSignalInfo-semaphores-05125", + "text": " If <code>semaphores</code> has <code>NvSciSyncObj</code> as payload, application <strong class=\"purple\">must</strong> calculate the corresponding timeline semaphore value in <code>value</code> by calling <a href=\"#NvSciSync2-extension-page\">NvSciSync APIs</a>." + } ] }, "vkImportSemaphoreWin32HandleKHR": { @@ -3708,6 +4080,30 @@ } ] }, + "vkImportSemaphoreSciSyncObjNV": { + "(VK_NV_external_sci_sync)": [ + { + "vuid": "VUID-vkImportSemaphoreSciSyncObjNV-sciSyncImport-05155", + "text": " <code>VkPhysicalDeviceExternalSciSyncFeaturesNV</code>::<code>sciSyncImport</code> and <code>VkPhysicalDeviceExternalSciSyncFeaturesNV</code>::<code>sciSyncSemaphore</code> <strong class=\"purple\">must</strong> be enabled" + } + ] + }, + "VkImportSemaphoreSciSyncInfoNV": { + "(VK_NV_external_sci_sync)": [ + { + "vuid": "VUID-VkImportSemaphoreSciSyncInfoNV-handleType-05126", + "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a value included in the <a href=\"#synchronization-semaphore-handletypes-sci-sync\">Handle Types Supported by <code>VkImportSemaphoreSciSyncInfoNV</code></a> table" + }, + { + "vuid": "VUID-VkImportSemaphoreSciSyncInfoNV-semaphore-05127", + "text": " <code>semaphore</code> <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkSemaphoreType\">VkSemaphoreType</a> of <code>VK_SEMAPHORE_TYPE_TIMELINE</code>" + }, + { + "vuid": "VUID-VkImportSemaphoreSciSyncInfoNV-semaphore-05128", + "text": " <code>semaphore</code> <strong class=\"purple\">must</strong> not be associated with any queue command that has not yet completed execution on that queue" + } + ] + }, "vkCreateEvent": { "(VK_KHR_portability_subset)": [ { @@ -3715,6 +4111,12 @@ "text": " If the <code><a href=\"#VK_KHR_portability_subset\">VK_KHR_portability_subset</a></code> extension is enabled, and <a href=\"#VkPhysicalDevicePortabilitySubsetFeaturesKHR\">VkPhysicalDevicePortabilitySubsetFeaturesKHR</a>::<code>events</code> is <code>VK_FALSE</code>, then the implementation does not support <a href=\"#synchronization-events\">events</a>, and <a href=\"#vkCreateEvent\">vkCreateEvent</a> <strong class=\"purple\">must</strong> not be used" } ], + "(VKSC_VERSION_1_0)": [ + { + "vuid": "VUID-vkCreateEvent-device-05068", + "text": " The number of {objectnameplural} currently allocated from <code>device</code> plus {objectcount} <strong class=\"purple\">must</strong> be less than or equal to the total number of {objectnameplural} requested via <code>VkDeviceObjectReservationCreateInfo</code>::pname:{objectnamecamelcase}RequestCount specified when <code>device</code> was created" + } + ], "core": [ { "vuid": "VUID-vkCreateEvent-device-parameter", @@ -3767,14 +4169,6 @@ "text": " All submitted commands that refer to <code>event</code> <strong class=\"purple\">must</strong> have completed execution" }, { - "vuid": "VUID-vkDestroyEvent-event-01146", - "text": " If <code>VkAllocationCallbacks</code> were provided when <code>event</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here" - }, - { - "vuid": "VUID-vkDestroyEvent-event-01147", - "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>event</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" - }, - { "vuid": "VUID-vkDestroyEvent-device-parameter", "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" }, @@ -3790,6 +4184,16 @@ "vuid": "VUID-vkDestroyEvent-event-parent", "text": " If <code>event</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" } + ], + "!(VKSC_VERSION_1_0)": [ + { + "vuid": "VUID-vkDestroyEvent-event-01146", + "text": " If <code>VkAllocationCallbacks</code> were provided when <code>event</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here" + }, + { + "vuid": "VUID-vkDestroyEvent-event-01147", + "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>event</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" + } ] }, "vkGetEventStatus": { @@ -5810,7 +6214,11 @@ }, { "vuid": "VUID-VkBufferMemoryBarrier2-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=\"#VkExternalMemoryAcquireUnmodifiedEXT\">VkExternalMemoryAcquireUnmodifiedEXT</a>" + }, + { + "vuid": "VUID-VkBufferMemoryBarrier2-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-VkBufferMemoryBarrier2-srcStageMask-parameter", @@ -6260,7 +6668,11 @@ }, { "vuid": "VUID-VkBufferMemoryBarrier-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=\"#VkExternalMemoryAcquireUnmodifiedEXT\">VkExternalMemoryAcquireUnmodifiedEXT</a>" + }, + { + "vuid": "VUID-VkBufferMemoryBarrier-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-VkBufferMemoryBarrier-buffer-parameter", @@ -6532,7 +6944,7 @@ }, { "vuid": "VUID-VkImageMemoryBarrier2-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=\"#VkSampleLocationsInfoEXT\">VkSampleLocationsInfoEXT</a>" + "text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkExternalMemoryAcquireUnmodifiedEXT\">VkExternalMemoryAcquireUnmodifiedEXT</a> or <a href=\"#VkSampleLocationsInfoEXT\">VkSampleLocationsInfoEXT</a>" }, { "vuid": "VUID-VkImageMemoryBarrier2-sType-unique", @@ -7160,7 +7572,7 @@ }, { "vuid": "VUID-VkImageMemoryBarrier-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=\"#VkSampleLocationsInfoEXT\">VkSampleLocationsInfoEXT</a>" + "text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkExternalMemoryAcquireUnmodifiedEXT\">VkExternalMemoryAcquireUnmodifiedEXT</a> or <a href=\"#VkSampleLocationsInfoEXT\">VkSampleLocationsInfoEXT</a>" }, { "vuid": "VUID-VkImageMemoryBarrier-sType-unique", @@ -7358,6 +7770,18 @@ } ] }, + "VkExternalMemoryAcquireUnmodifiedEXT": { + "(VK_EXT_external_memory_acquire_unmodified)": [ + { + "vuid": "VUID-VkExternalMemoryAcquireUnmodifiedEXT-acquireUnmodifiedMemory-08922", + "text": " If <code>acquireUnmodifiedMemory</code> is <code>VK_TRUE</code>, and the memory barrier’s <code>srcQueueFamilyIndex</code> is a special queue family reserved for external memory ownership transfers (as described in <a href=\"#synchronization-queue-transfers\">Queue Family Ownership Transfer</a>), then each range of <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> bound to the resource <strong class=\"purple\">must</strong> have remained unmodified during all time since the resource’s most recent release of ownership to the queue family." + }, + { + "vuid": "VUID-VkExternalMemoryAcquireUnmodifiedEXT-sType-sType", + "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_EXT</code>" + } + ] + }, "vkQueueWaitIdle": { "core": [ { @@ -8037,7 +8461,7 @@ "text": " If <code>imageView</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, it <strong class=\"purple\">must</strong> have a <code>layerCount</code> equal to <code>1</code>" } ], - "(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_EXT_fragment_density_map)+(VK_VERSION_1_1,VK_KHR_multiview)": [ + "(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_EXT_fragment_density_map)+(VK_VERSION_1_1,VK_KHR_multiview)+!(VKSC_VERSION_1_0)": [ { "vuid": "VUID-VkRenderingFragmentDensityMapAttachmentInfoEXT-apiVersion-07908", "text": " If <a href=\"#VK_KHR_multiview\">VK_KHR_multiview</a> is not enabled, <a href=\"#VkPhysicalDeviceProperties\">VkPhysicalDeviceProperties</a>::<code>apiVersion</code> is less than Vulkan 1.1, and <code>imageView</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, it <strong class=\"purple\">must</strong> have a <code>layerCount</code> equal to <code>1</code>" @@ -8115,6 +8539,20 @@ ] }, "vkCreateRenderPass": { + "(VKSC_VERSION_1_0)+(VKSC_VERSION_1_0)": [ + { + "vuid": "VUID-vkCreateRenderPass-device-05068", + "text": " The number of {objectnameplural} currently allocated from <code>device</code> plus {objectcount} <strong class=\"purple\">must</strong> be less than or equal to the total number of {objectnameplural} requested via <code>VkDeviceObjectReservationCreateInfo</code>::pname:{objectnamecamelcase}RequestCount specified when <code>device</code> was created" + }, + { + "vuid": "VUID-vkCreateRenderPass-subpasses-device-05089", + "text": " The number of subpasses currently allocated from <code>device</code> across all slink:VkRenderPass objects plus pname:pCreateInfo->subpassCount <strong class=\"purple\">must</strong> be less than or equal to the total number of subpasses requested via <code>VkDeviceObjectReservationCreateInfo</code>::pname:subpassDescriptionRequestCount specified when <code>device</code> was created" + }, + { + "vuid": "VUID-vkCreateRenderPass-attachments-device-05089", + "text": " The number of attachments currently allocated from <code>device</code> across all slink:VkRenderPass objects plus pname:pCreateInfo->attachmentCount <strong class=\"purple\">must</strong> be less than or equal to the total number of attachments requested via <code>VkDeviceObjectReservationCreateInfo</code>::pname:attachmentDescriptionRequestCount specified when <code>device</code> was created" + } + ], "core": [ { "vuid": "VUID-vkCreateRenderPass-device-parameter", @@ -8254,6 +8692,20 @@ "vuid": "VUID-VkRenderPassCreateInfo-pNext-02515", "text": " If the <code>pNext</code> chain includes a <a href=\"#VkRenderPassMultiviewCreateInfo\">VkRenderPassMultiviewCreateInfo</a> structure, and each element of its <code>pViewMasks</code> member is <code>0</code>, its <code>correlationMaskCount</code> member <strong class=\"purple\">must</strong> be <code>0</code>" } + ], + "(VKSC_VERSION_1_0)": [ + { + "vuid": "VUID-VkRenderPassCreateInfo-subpassCount-05050", + "text": " <code>subpassCount</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#limits-maxRenderPassSubpasses\">maxRenderPassSubpasses</a>" + }, + { + "vuid": "VUID-VkRenderPassCreateInfo-dependencyCount-05051", + "text": " <code>dependencyCount</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#limits-maxRenderPassDependencies\">maxRenderPassDependencies</a>" + }, + { + "vuid": "VUID-VkRenderPassCreateInfo-attachmentCount-05052", + "text": " <code>attachmentCount</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#limits-maxFramebufferAttachments\">maxFramebufferAttachments</a>" + } ] }, "VkRenderPassMultiviewCreateInfo": { @@ -8720,6 +9172,16 @@ "vuid": "VUID-VkSubpassDescription-pInputAttachments-02868", "text": " If the render pass is created with <code>VK_RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM</code> each of the elements of <code>pInputAttachments</code> <strong class=\"purple\">must</strong> be <code>VK_ATTACHMENT_UNUSED</code>" } + ], + "(VKSC_VERSION_1_0)": [ + { + "vuid": "VUID-VkSubpassDescription-inputAttachmentCount-05053", + "text": " <code>inputAttachmentCount</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#limits-maxSubpassInputAttachments\">maxSubpassInputAttachments</a>" + }, + { + "vuid": "VUID-VkSubpassDescription-preserveAttachmentCount-05054", + "text": " <code>preserveAttachmentCount</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#limits-maxSubpassPreserveAttachments\">maxSubpassPreserveAttachments</a>" + } ] }, "VkAttachmentReference": { @@ -8995,6 +9457,20 @@ ] }, "vkCreateRenderPass2": { + "(VK_VERSION_1_2,VK_KHR_create_renderpass2)+(VKSC_VERSION_1_0)+(VKSC_VERSION_1_0)": [ + { + "vuid": "VUID-vkCreateRenderPass2-device-05068", + "text": " The number of {objectnameplural} currently allocated from <code>device</code> plus {objectcount} <strong class=\"purple\">must</strong> be less than or equal to the total number of {objectnameplural} requested via <code>VkDeviceObjectReservationCreateInfo</code>::pname:{objectnamecamelcase}RequestCount specified when <code>device</code> was created" + }, + { + "vuid": "VUID-vkCreateRenderPass2-subpasses-device-05089", + "text": " The number of subpasses currently allocated from <code>device</code> across all slink:VkRenderPass objects plus pname:pCreateInfo->subpassCount <strong class=\"purple\">must</strong> be less than or equal to the total number of subpasses requested via <code>VkDeviceObjectReservationCreateInfo</code>::pname:subpassDescriptionRequestCount specified when <code>device</code> was created" + }, + { + "vuid": "VUID-vkCreateRenderPass2-attachments-device-05089", + "text": " The number of attachments currently allocated from <code>device</code> across all slink:VkRenderPass objects plus pname:pCreateInfo->attachmentCount <strong class=\"purple\">must</strong> be less than or equal to the total number of attachments requested via <code>VkDeviceObjectReservationCreateInfo</code>::pname:attachmentDescriptionRequestCount specified when <code>device</code> was created" + } + ], "(VK_VERSION_1_2,VK_KHR_create_renderpass2)": [ { "vuid": "VUID-vkCreateRenderPass2-device-parameter", @@ -9163,6 +9639,20 @@ "text": " If <code>flags</code> includes <code>VK_SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM</code>, then the subpass <strong class=\"purple\">must</strong> be the last subpass in a subpass dependency chain" } ], + "(VK_VERSION_1_2,VK_KHR_create_renderpass2)+(VKSC_VERSION_1_0)": [ + { + "vuid": "VUID-VkRenderPassCreateInfo2-subpassCount-05055", + "text": " <code>subpassCount</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#limits-maxRenderPassSubpasses\">maxRenderPassSubpasses</a>" + }, + { + "vuid": "VUID-VkRenderPassCreateInfo2-dependencyCount-05056", + "text": " <code>dependencyCount</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#limits-maxRenderPassDependencies\">maxRenderPassDependencies</a>" + }, + { + "vuid": "VUID-VkRenderPassCreateInfo2-attachmentCount-05057", + "text": " <code>attachmentCount</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#limits-maxFramebufferAttachments\">maxFramebufferAttachments</a>" + } + ], "(VK_VERSION_1_2,VK_KHR_create_renderpass2)+(VK_VERSION_1_2,VK_KHR_separate_depth_stencil_layouts)": [ { "vuid": "VUID-VkRenderPassCreateInfo2-attachment-06244", @@ -9615,6 +10105,16 @@ "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<em>{ibit}</em>BIT_EXT</code> for any index <em>i</em>" } ], + "(VK_VERSION_1_2,VK_KHR_create_renderpass2)+(VKSC_VERSION_1_0)": [ + { + "vuid": "VUID-VkSubpassDescription2-inputAttachmentCount-05058", + "text": " <code>inputAttachmentCount</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#limits-maxSubpassInputAttachments\">maxSubpassInputAttachments</a>" + }, + { + "vuid": "VUID-VkSubpassDescription2-preserveAttachmentCount-05059", + "text": " <code>preserveAttachmentCount</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#limits-maxSubpassPreserveAttachments\">maxSubpassPreserveAttachments</a>" + } + ], "(VK_VERSION_1_2,VK_KHR_create_renderpass2)+(VK_VERSION_1_1,VK_KHR_multiview)": [ { "vuid": "VUID-VkSubpassDescription2-multiview-06558", @@ -10059,14 +10559,6 @@ "text": " All submitted commands that refer to <code>renderPass</code> <strong class=\"purple\">must</strong> have completed execution" }, { - "vuid": "VUID-vkDestroyRenderPass-renderPass-00874", - "text": " If <code>VkAllocationCallbacks</code> were provided when <code>renderPass</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here" - }, - { - "vuid": "VUID-vkDestroyRenderPass-renderPass-00875", - "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>renderPass</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" - }, - { "vuid": "VUID-vkDestroyRenderPass-device-parameter", "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" }, @@ -10082,6 +10574,16 @@ "vuid": "VUID-vkDestroyRenderPass-renderPass-parent", "text": " If <code>renderPass</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" } + ], + "!(VKSC_VERSION_1_0)": [ + { + "vuid": "VUID-vkDestroyRenderPass-renderPass-00874", + "text": " If <code>VkAllocationCallbacks</code> were provided when <code>renderPass</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here" + }, + { + "vuid": "VUID-vkDestroyRenderPass-renderPass-00875", + "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>renderPass</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" + } ] }, "vkCreateFramebuffer": { @@ -10106,6 +10608,12 @@ "vuid": "VUID-vkCreateFramebuffer-pFramebuffer-parameter", "text": " <code>pFramebuffer</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkFramebuffer\">VkFramebuffer</a> handle" } + ], + "(VKSC_VERSION_1_0)": [ + { + "vuid": "VUID-vkCreateFramebuffer-device-05068", + "text": " The number of {objectnameplural} currently allocated from <code>device</code> plus {objectcount} <strong class=\"purple\">must</strong> be less than or equal to the total number of {objectnameplural} requested via <code>VkDeviceObjectReservationCreateInfo</code>::pname:{objectnamecamelcase}RequestCount specified when <code>device</code> was created" + } ] }, "VkFramebufferCreateInfo": { @@ -10275,6 +10783,10 @@ { "vuid": "VUID-VkFramebufferCreateInfo-flags-04538", "text": " If <code>flags</code> does not include <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, and <code>renderPass</code> was not specified with non-zero view masks, each element of <code>pAttachments</code> that is used as a <a href=\"#primsrast-fragment-shading-rate-attachment\">fragment shading rate attachment</a> by <code>renderPass</code> <strong class=\"purple\">must</strong> have a <code>layerCount</code> that is either <code>1</code>, or greater than <code>layers</code>" + }, + { + "vuid": "VUID-VkFramebufferCreateInfo-renderPass-08921", + "text": " If <code>renderPass</code> was specified with non-zero view masks, each element of <code>pAttachments</code> that is used as a <a href=\"#primsrast-fragment-shading-rate-attachment\">fragment shading rate attachment</a> <strong class=\"purple\">must</strong> have a <code>layerCount</code> equal to <code>1</code> or greater than the index of the most significant bit set in any of those view masks" } ], "(VK_KHR_fragment_shading_rate)": [ @@ -10391,6 +10903,12 @@ "text": " If <code>flags</code> includes <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, the <code>usage</code> member of any element of the <code>pAttachmentImageInfos</code> member of a <a href=\"#VkFramebufferAttachmentsCreateInfo\">VkFramebufferAttachmentsCreateInfo</a> structure included in the <code>pNext</code> chain that refers to an attachment used as a fragment shading rate attachment by <code>renderPass</code> <strong class=\"purple\">must</strong> include <code>VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR</code>" } ], + "(VKSC_VERSION_1_0)": [ + { + "vuid": "VUID-VkFramebufferCreateInfo-attachmentCount-05060", + "text": " <code>attachmentCount</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#limits-maxFramebufferAttachments\">maxFramebufferAttachments</a>" + } + ], "(VK_EXT_multisampled_render_to_single_sampled)": [ { "vuid": "VUID-VkFramebufferCreateInfo-samples-06881", @@ -10449,14 +10967,6 @@ "text": " All submitted commands that refer to <code>framebuffer</code> <strong class=\"purple\">must</strong> have completed execution" }, { - "vuid": "VUID-vkDestroyFramebuffer-framebuffer-00893", - "text": " If <code>VkAllocationCallbacks</code> were provided when <code>framebuffer</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here" - }, - { - "vuid": "VUID-vkDestroyFramebuffer-framebuffer-00894", - "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>framebuffer</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" - }, - { "vuid": "VUID-vkDestroyFramebuffer-device-parameter", "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" }, @@ -10472,6 +10982,16 @@ "vuid": "VUID-vkDestroyFramebuffer-framebuffer-parent", "text": " If <code>framebuffer</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" } + ], + "!(VKSC_VERSION_1_0)": [ + { + "vuid": "VUID-vkDestroyFramebuffer-framebuffer-00893", + "text": " If <code>VkAllocationCallbacks</code> were provided when <code>framebuffer</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here" + }, + { + "vuid": "VUID-vkDestroyFramebuffer-framebuffer-00894", + "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>framebuffer</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" + } ] }, "vkCmdBeginRenderPass": { @@ -11921,19 +12441,19 @@ ] }, "vkCreateShaderModule": { - "(VK_EXT_validation_cache)": [ + "!(VKSC_VERSION_1_0)+(VK_EXT_validation_cache)": [ { "vuid": "VUID-vkCreateShaderModule-pCreateInfo-06904", "text": " If <code>pCreateInfo</code> is not <code>NULL</code>, <code>pCreateInfo->pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a <a href=\"#VkShaderModuleValidationCacheCreateInfoEXT\">VkShaderModuleValidationCacheCreateInfoEXT</a> structure" } ], - "!(VK_EXT_validation_cache)": [ + "!(VKSC_VERSION_1_0)+!(VK_EXT_validation_cache)": [ { "vuid": "VUID-vkCreateShaderModule-pCreateInfo-06905", "text": " If <code>pCreateInfo</code> is not <code>NULL</code>, <code>pCreateInfo->pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" } ], - "core": [ + "!(VKSC_VERSION_1_0)": [ { "vuid": "VUID-vkCreateShaderModule-device-parameter", "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" @@ -11953,7 +12473,7 @@ ] }, "VkShaderModuleCreateInfo": { - "!(VK_NV_glsl_shader[]\n:prefixConditio)": [ + "!(VKSC_VERSION_1_0)+!(VK_NV_glsl_shader[]\n:prefixConditio)": [ { "vuid": "VUID-VkShaderModuleCreateInfo-codeSize-08735", "text": " If pname:codeType is ename:VK_SHADER_CODE_TYPE_SPIRV_EXT, <code>codeSize</code> <strong class=\"purple\">must</strong> be a multiple of 4" @@ -11987,7 +12507,7 @@ "text": " If pname:codeType is ename:VK_SHADER_CODE_TYPE_SPIRV_EXT, and <code>pCode</code> declares any of the SPIR-V extensions listed in the <a href=\"#spirvenv-extensions-table\">SPIR-V Environment</a> appendix, one of the corresponding requirements <strong class=\"purple\">must</strong> be satisfied" } ], - "(VK_NV_glsl_shader[]\n:prefixCondition: If pCode is a pointer to SPIR-V cod)": [ + "!(VKSC_VERSION_1_0)+(VK_NV_glsl_shader[]\n:prefixCondition: If pCode is a pointer to SPIR-V cod)": [ { "vuid": "VUID-VkShaderModuleCreateInfo-codeSize-08735", "text": " If pname:codeType is ename:VK_SHADER_CODE_TYPE_SPIRV_EXT, <code>codeSize</code> <strong class=\"purple\">must</strong> be a multiple of 4" @@ -12029,7 +12549,7 @@ "text": " If <code>pCode</code> is a pointer to GLSL code, it <strong class=\"purple\">must</strong> be valid GLSL code written to the <code>GL_KHR_vulkan_glsl</code> GLSL extension specification" } ], - "core": [ + "!(VKSC_VERSION_1_0)": [ { "vuid": "VUID-VkShaderModuleCreateInfo-codeSize-01085", "text": " <code>codeSize</code> <strong class=\"purple\">must</strong> be greater than 0" @@ -12049,7 +12569,7 @@ ] }, "VkShaderModuleValidationCacheCreateInfoEXT": { - "(VK_EXT_validation_cache)": [ + "!(VKSC_VERSION_1_0)+(VK_EXT_validation_cache)": [ { "vuid": "VUID-VkShaderModuleValidationCacheCreateInfoEXT-sType-sType", "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT</code>" @@ -12061,7 +12581,7 @@ ] }, "vkDestroyShaderModule": { - "core": [ + "!(VKSC_VERSION_1_0)": [ { "vuid": "VUID-vkDestroyShaderModule-shaderModule-01092", "text": " If <code>VkAllocationCallbacks</code> were provided when <code>shaderModule</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here" @@ -12367,7 +12887,7 @@ ] }, "vkCreateComputePipelines": { - "core": [ + "!(VKSC_VERSION_1_0)": [ { "vuid": "VUID-vkCreateComputePipelines-flags-00695", "text": " If the <code>flags</code> member of any element of <code>pCreateInfos</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, and the <code>basePipelineIndex</code> member of that same element is not <code>-1</code>, <code>basePipelineIndex</code> <strong class=\"purple\">must</strong> be less than the index into <code>pCreateInfos</code> that corresponds to that element" @@ -12375,8 +12895,26 @@ { "vuid": "VUID-vkCreateComputePipelines-flags-00696", "text": " If the <code>flags</code> member of any element of <code>pCreateInfos</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, the base pipeline <strong class=\"purple\">must</strong> have been created with the <code>VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT</code> flag set" + } + ], + "(VKSC_VERSION_1_0)": [ + { + "vuid": "VUID-vkCreateComputePipelines-pipelineCache-05022", + "text": " <code>pipelineCache</code> <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>" }, { + "vuid": "VUID-vkCreateComputePipelines-device-05068", + "text": " The number of {objectnameplural} currently allocated from <code>device</code> plus {objectcount} <strong class=\"purple\">must</strong> be less than or equal to the total number of {objectnameplural} requested via <code>VkDeviceObjectReservationCreateInfo</code>::pname:{objectnamecamelcase}RequestCount specified when <code>device</code> was created" + } + ], + "(VK_VERSION_1_3,VK_EXT_pipeline_creation_cache_control)": [ + { + "vuid": "VUID-vkCreateComputePipelines-pipelineCache-02873", + "text": " If <code>pipelineCache</code> was created with <code>VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT</code>, host access to <code>pipelineCache</code> <strong class=\"purple\">must</strong> be <a href=\"#fundamentals-threadingbehavior\">externally synchronized</a>" + } + ], + "core": [ + { "vuid": "VUID-vkCreateComputePipelines-device-parameter", "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" }, @@ -12404,16 +12942,10 @@ "vuid": "VUID-vkCreateComputePipelines-pipelineCache-parent", "text": " If <code>pipelineCache</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" } - ], - "(VK_VERSION_1_3,VK_EXT_pipeline_creation_cache_control)": [ - { - "vuid": "VUID-vkCreateComputePipelines-pipelineCache-02873", - "text": " If <code>pipelineCache</code> was created with <code>VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT</code>, host access to <code>pipelineCache</code> <strong class=\"purple\">must</strong> be <a href=\"#fundamentals-threadingbehavior\">externally synchronized</a>" - } ] }, "VkComputePipelineCreateInfo": { - "core": [ + "!(VKSC_VERSION_1_0)": [ { "vuid": "VUID-VkComputePipelineCreateInfo-flags-07984", "text": " If <code>flags</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, and <code>basePipelineIndex</code> is -1, <code>basePipelineHandle</code> <strong class=\"purple\">must</strong> be a valid handle to a compute <code>VkPipeline</code>" @@ -12425,8 +12957,20 @@ { "vuid": "VUID-VkComputePipelineCreateInfo-flags-07986", "text": " If <code>flags</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, <code>basePipelineIndex</code> <strong class=\"purple\">must</strong> be -1 or <code>basePipelineHandle</code> <strong class=\"purple\">must</strong> be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>" + } + ], + "(VKSC_VERSION_1_0)": [ + { + "vuid": "VUID-VkComputePipelineCreateInfo-basePipelineHandle-05024", + "text": " <code>basePipelineHandle</code> <strong class=\"purple\">must</strong> be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>" }, { + "vuid": "VUID-VkComputePipelineCreateInfo-basePipelineIndex-05025", + "text": " <code>basePipelineIndex</code> <strong class=\"purple\">must</strong> be zero" + } + ], + "core": [ + { "vuid": "VUID-VkComputePipelineCreateInfo-layout-07987", "text": " If a push constant block is declared in a shader, a push constant range in <code>layout</code> <strong class=\"purple\">must</strong> match both the shader stage and range" }, @@ -12579,10 +13123,6 @@ "text": " <code>stage</code> <strong class=\"purple\">must</strong> not be <code>VK_SHADER_STAGE_ALL_GRAPHICS</code>, or <code>VK_SHADER_STAGE_ALL</code>" }, { - "vuid": "VUID-VkPipelineShaderStageCreateInfo-pName-00707", - "text": " <code>pName</code> <strong class=\"purple\">must</strong> be the name of an <code>OpEntryPoint</code> in <code>module</code> with an execution model that matches <code>stage</code>" - }, - { "vuid": "VUID-VkPipelineShaderStageCreateInfo-maxClipDistances-00708", "text": " If the identified entry point includes any variable in its interface that is declared with the <code>ClipDistance</code> <code>BuiltIn</code> decoration, that variable <strong class=\"purple\">must</strong> not have an array size greater than <code>VkPhysicalDeviceLimits</code>::<code>maxClipDistances</code>" }, @@ -12679,6 +13219,22 @@ "text": " If the <a href=\"#features-clustercullingShader\"><code>clustercullingShader</code></a> feature is not enabled, <code>stage</code> <strong class=\"purple\">must</strong> not be <code>VK_SHADER_STAGE_CLUSTER_CULLING_BIT_HUAWEI</code>" } ], + "(VKSC_VERSION_1_0)": [ + { + "vuid": "VUID-VkPipelineShaderStageCreateInfo-module-05026", + "text": " <code>module</code> <strong class=\"purple\">must</strong> be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>." + }, + { + "vuid": "VUID-VkPipelineShaderStageCreateInfo-pName-05027", + "text": " If <code>pName</code> is not <code>NULL</code>, it <strong class=\"purple\">must</strong> be the name of an <code>OpEntryPoint</code> in the SPIR-V shader module used for offline compilation of this pipeline with an execution model that matches <code>stage</code>" + } + ], + "!(VKSC_VERSION_1_0)": [ + { + "vuid": "VUID-VkPipelineShaderStageCreateInfo-pName-00707", + "text": " <code>pName</code> <strong class=\"purple\">must</strong> be the name of an <code>OpEntryPoint</code> in <code>module</code> with an execution model that matches <code>stage</code>" + } + ], "(VK_EXT_shader_stencil_export)": [ { "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-06686", @@ -12909,7 +13465,7 @@ ] }, "vkCreateGraphicsPipelines": { - "core": [ + "!(VKSC_VERSION_1_0)": [ { "vuid": "VUID-vkCreateGraphicsPipelines-flags-00720", "text": " If the <code>flags</code> member of any element of <code>pCreateInfos</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, and the <code>basePipelineIndex</code> member of that same element is not <code>-1</code>, <code>basePipelineIndex</code> <strong class=\"purple\">must</strong> be less than the index into <code>pCreateInfos</code> that corresponds to that element" @@ -12917,8 +13473,26 @@ { "vuid": "VUID-vkCreateGraphicsPipelines-flags-00721", "text": " If the <code>flags</code> member of any element of <code>pCreateInfos</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, the base pipeline <strong class=\"purple\">must</strong> have been created with the <code>VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT</code> flag set" + } + ], + "(VKSC_VERSION_1_0)": [ + { + "vuid": "VUID-vkCreateGraphicsPipelines-pipelineCache-05031", + "text": " <code>pipelineCache</code> <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>" }, { + "vuid": "VUID-vkCreateGraphicsPipelines-device-05068", + "text": " The number of {objectnameplural} currently allocated from <code>device</code> plus {objectcount} <strong class=\"purple\">must</strong> be less than or equal to the total number of {objectnameplural} requested via <code>VkDeviceObjectReservationCreateInfo</code>::pname:{objectnamecamelcase}RequestCount specified when <code>device</code> was created" + } + ], + "(VK_VERSION_1_3,VK_EXT_pipeline_creation_cache_control)": [ + { + "vuid": "VUID-vkCreateGraphicsPipelines-pipelineCache-02876", + "text": " If <code>pipelineCache</code> was created with <code>VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT</code>, host access to <code>pipelineCache</code> <strong class=\"purple\">must</strong> be <a href=\"#fundamentals-threadingbehavior\">externally synchronized</a>" + } + ], + "core": [ + { "vuid": "VUID-vkCreateGraphicsPipelines-device-parameter", "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" }, @@ -12946,16 +13520,10 @@ "vuid": "VUID-vkCreateGraphicsPipelines-pipelineCache-parent", "text": " If <code>pipelineCache</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" } - ], - "(VK_VERSION_1_3,VK_EXT_pipeline_creation_cache_control)": [ - { - "vuid": "VUID-vkCreateGraphicsPipelines-pipelineCache-02876", - "text": " If <code>pipelineCache</code> was created with <code>VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT</code>, host access to <code>pipelineCache</code> <strong class=\"purple\">must</strong> be <a href=\"#fundamentals-threadingbehavior\">externally synchronized</a>" - } ] }, "VkGraphicsPipelineCreateInfo": { - "core": [ + "!(VKSC_VERSION_1_0)": [ { "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-07984", "text": " If <code>flags</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, and <code>basePipelineIndex</code> is -1, <code>basePipelineHandle</code> <strong class=\"purple\">must</strong> be a valid handle to a graphics <code>VkPipeline</code>" @@ -12967,8 +13535,20 @@ { "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-07986", "text": " If <code>flags</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, <code>basePipelineIndex</code> <strong class=\"purple\">must</strong> be -1 or <code>basePipelineHandle</code> <strong class=\"purple\">must</strong> be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>" + } + ], + "(VKSC_VERSION_1_0)": [ + { + "vuid": "VUID-VkGraphicsPipelineCreateInfo-basePipelineHandle-05024", + "text": " <code>basePipelineHandle</code> <strong class=\"purple\">must</strong> be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>" }, { + "vuid": "VUID-VkGraphicsPipelineCreateInfo-basePipelineIndex-05025", + "text": " <code>basePipelineIndex</code> <strong class=\"purple\">must</strong> be zero" + } + ], + "core": [ + { "vuid": "VUID-VkGraphicsPipelineCreateInfo-layout-07987", "text": " If a push constant block is declared in a shader, a push constant range in <code>layout</code> <strong class=\"purple\">must</strong> match both the shader stage and range" }, @@ -14547,7 +15127,7 @@ ] }, "vkCreateRayTracingPipelinesNV": { - "(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_NV_ray_tracing)": [ + "(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_NV_ray_tracing)+!(VKSC_VERSION_1_0)": [ { "vuid": "VUID-vkCreateRayTracingPipelinesNV-flags-03415", "text": " If the <code>flags</code> member of any element of <code>pCreateInfos</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, and the <code>basePipelineIndex</code> member of that same element is not <code>-1</code>, <code>basePipelineIndex</code> <strong class=\"purple\">must</strong> be less than the index into <code>pCreateInfos</code> that corresponds to that element" @@ -14555,7 +15135,27 @@ { "vuid": "VUID-vkCreateRayTracingPipelinesNV-flags-03416", "text": " If the <code>flags</code> member of any element of <code>pCreateInfos</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, the base pipeline <strong class=\"purple\">must</strong> have been created with the <code>VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT</code> flag set" - }, + } + ], + "(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_NV_ray_tracing)+!(VKSC_VERSION_1_0)+(VK_VERSION_1_1,VK_KHR_device_group)": [ + { + "vuid": "VUID-vkCreateRayTracingPipelinesNV-flags-03816", + "text": " <code>flags</code> <strong class=\"purple\">must</strong> not contain the <code>VK_PIPELINE_CREATE_DISPATCH_BASE</code> flag" + } + ], + "(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_NV_ray_tracing)+(VK_VERSION_1_3,VK_EXT_pipeline_creation_cache_control)": [ + { + "vuid": "VUID-vkCreateRayTracingPipelinesNV-pipelineCache-02903", + "text": " If <code>pipelineCache</code> was created with <code>VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT</code>, host access to <code>pipelineCache</code> <strong class=\"purple\">must</strong> be <a href=\"#fundamentals-threadingbehavior\">externally synchronized</a>" + } + ], + "(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_NV_ray_tracing)+(VKSC_VERSION_1_0)": [ + { + "vuid": "VUID-vkCreateRayTracingPipelinesNV-pipelineCache-05035", + "text": " <code>pipelineCache</code> <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>" + } + ], + "(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_NV_ray_tracing)": [ { "vuid": "VUID-vkCreateRayTracingPipelinesNV-device-parameter", "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" @@ -14584,22 +15184,10 @@ "vuid": "VUID-vkCreateRayTracingPipelinesNV-pipelineCache-parent", "text": " If <code>pipelineCache</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" } - ], - "(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_NV_ray_tracing)+(VK_VERSION_1_1,VK_KHR_device_group)": [ - { - "vuid": "VUID-vkCreateRayTracingPipelinesNV-flags-03816", - "text": " <code>flags</code> <strong class=\"purple\">must</strong> not contain the <code>VK_PIPELINE_CREATE_DISPATCH_BASE</code> flag" - } - ], - "(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_NV_ray_tracing)+(VK_VERSION_1_3,VK_EXT_pipeline_creation_cache_control)": [ - { - "vuid": "VUID-vkCreateRayTracingPipelinesNV-pipelineCache-02903", - "text": " If <code>pipelineCache</code> was created with <code>VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT</code>, host access to <code>pipelineCache</code> <strong class=\"purple\">must</strong> be <a href=\"#fundamentals-threadingbehavior\">externally synchronized</a>" - } ] }, "vkCreateRayTracingPipelinesKHR": { - "(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_KHR_ray_tracing_pipeline)": [ + "(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_KHR_ray_tracing_pipeline)+!(VKSC_VERSION_1_0)": [ { "vuid": "VUID-vkCreateRayTracingPipelinesKHR-flags-03415", "text": " If the <code>flags</code> member of any element of <code>pCreateInfos</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, and the <code>basePipelineIndex</code> member of that same element is not <code>-1</code>, <code>basePipelineIndex</code> <strong class=\"purple\">must</strong> be less than the index into <code>pCreateInfos</code> that corresponds to that element" @@ -14607,7 +15195,21 @@ { "vuid": "VUID-vkCreateRayTracingPipelinesKHR-flags-03416", "text": " If the <code>flags</code> member of any element of <code>pCreateInfos</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, the base pipeline <strong class=\"purple\">must</strong> have been created with the <code>VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT</code> flag set" - }, + } + ], + "(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_KHR_ray_tracing_pipeline)+!(VKSC_VERSION_1_0)+(VK_VERSION_1_1,VK_KHR_device_group)": [ + { + "vuid": "VUID-vkCreateRayTracingPipelinesKHR-flags-03816", + "text": " <code>flags</code> <strong class=\"purple\">must</strong> not contain the <code>VK_PIPELINE_CREATE_DISPATCH_BASE</code> flag" + } + ], + "(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_KHR_ray_tracing_pipeline)+(VK_VERSION_1_3,VK_EXT_pipeline_creation_cache_control)": [ + { + "vuid": "VUID-vkCreateRayTracingPipelinesKHR-pipelineCache-02903", + "text": " If <code>pipelineCache</code> was created with <code>VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT</code>, host access to <code>pipelineCache</code> <strong class=\"purple\">must</strong> be <a href=\"#fundamentals-threadingbehavior\">externally synchronized</a>" + } + ], + "(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_KHR_ray_tracing_pipeline)": [ { "vuid": "VUID-vkCreateRayTracingPipelinesKHR-deferredOperation-03677", "text": " If <code>deferredOperation</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, it <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeferredOperationKHR\">VkDeferredOperationKHR</a> object" @@ -14657,16 +15259,10 @@ "text": " If <code>pipelineCache</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" } ], - "(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_KHR_ray_tracing_pipeline)+(VK_VERSION_1_1,VK_KHR_device_group)": [ - { - "vuid": "VUID-vkCreateRayTracingPipelinesKHR-flags-03816", - "text": " <code>flags</code> <strong class=\"purple\">must</strong> not contain the <code>VK_PIPELINE_CREATE_DISPATCH_BASE</code> flag" - } - ], - "(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_KHR_ray_tracing_pipeline)+(VK_VERSION_1_3,VK_EXT_pipeline_creation_cache_control)": [ + "(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_KHR_ray_tracing_pipeline)+(VKSC_VERSION_1_0)": [ { - "vuid": "VUID-vkCreateRayTracingPipelinesKHR-pipelineCache-02903", - "text": " If <code>pipelineCache</code> was created with <code>VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT</code>, host access to <code>pipelineCache</code> <strong class=\"purple\">must</strong> be <a href=\"#fundamentals-threadingbehavior\">externally synchronized</a>" + "vuid": "VUID-vkCreateRayTracingPipelinesKHR-pipelineCache-05036", + "text": " <code>pipelineCache</code> <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>" } ], "(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_KHR_ray_tracing_pipeline)+(VK_VERSION_1_3,VK_EXT_pipeline_creation_cache_control)+(VK_KHR_deferred_host_operations)": [ @@ -14677,7 +15273,7 @@ ] }, "VkRayTracingPipelineCreateInfoNV": { - "(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_NV_ray_tracing)": [ + "(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_NV_ray_tracing)+!(VKSC_VERSION_1_0)": [ { "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-07984", "text": " If <code>flags</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, and <code>basePipelineIndex</code> is -1, <code>basePipelineHandle</code> <strong class=\"purple\">must</strong> be a valid handle to a ray tracing <code>VkPipeline</code>" @@ -14689,8 +15285,28 @@ { "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-07986", "text": " If <code>flags</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, <code>basePipelineIndex</code> <strong class=\"purple\">must</strong> be -1 or <code>basePipelineHandle</code> <strong class=\"purple\">must</strong> be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>" + } + ], + "(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_NV_ray_tracing)+(VKSC_VERSION_1_0)": [ + { + "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-basePipelineHandle-05024", + "text": " <code>basePipelineHandle</code> <strong class=\"purple\">must</strong> be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>" + }, + { + "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-basePipelineIndex-05025", + "text": " <code>basePipelineIndex</code> <strong class=\"purple\">must</strong> be zero" + }, + { + "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-basePipelineHandle-05038", + "text": " <code>basePipelineHandle</code> <strong class=\"purple\">must</strong> be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>" }, { + "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-basePipelineIndex-05039", + "text": " <code>basePipelineIndex</code> <strong class=\"purple\">must</strong> be zero" + } + ], + "(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_NV_ray_tracing)": [ + { "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-layout-07987", "text": " If a push constant block is declared in a shader, a push constant range in <code>layout</code> <strong class=\"purple\">must</strong> match both the shader stage and range" }, @@ -14853,7 +15469,7 @@ ] }, "VkRayTracingPipelineCreateInfoKHR": { - "(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_KHR_ray_tracing_pipeline)": [ + "(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_KHR_ray_tracing_pipeline)+!(VKSC_VERSION_1_0)": [ { "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-flags-07984", "text": " If <code>flags</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, and <code>basePipelineIndex</code> is -1, <code>basePipelineHandle</code> <strong class=\"purple\">must</strong> be a valid handle to a ray tracing <code>VkPipeline</code>" @@ -14865,8 +15481,28 @@ { "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-flags-07986", "text": " If <code>flags</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, <code>basePipelineIndex</code> <strong class=\"purple\">must</strong> be -1 or <code>basePipelineHandle</code> <strong class=\"purple\">must</strong> be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>" + } + ], + "(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_KHR_ray_tracing_pipeline)+(VKSC_VERSION_1_0)": [ + { + "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-basePipelineHandle-05024", + "text": " <code>basePipelineHandle</code> <strong class=\"purple\">must</strong> be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>" + }, + { + "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-basePipelineIndex-05025", + "text": " <code>basePipelineIndex</code> <strong class=\"purple\">must</strong> be zero" + }, + { + "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-basePipelineHandle-05041", + "text": " <code>basePipelineHandle</code> <strong class=\"purple\">must</strong> be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>" }, { + "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-basePipelineIndex-05042", + "text": " <code>basePipelineIndex</code> <strong class=\"purple\">must</strong> be zero" + } + ], + "(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_KHR_ray_tracing_pipeline)": [ + { "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-layout-07987", "text": " If a push constant block is declared in a shader, a push constant range in <code>layout</code> <strong class=\"purple\">must</strong> match both the shader stage and range" }, @@ -15391,14 +16027,6 @@ "text": " All submitted commands that refer to <code>pipeline</code> <strong class=\"purple\">must</strong> have completed execution" }, { - "vuid": "VUID-vkDestroyPipeline-pipeline-00766", - "text": " If <code>VkAllocationCallbacks</code> were provided when <code>pipeline</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here" - }, - { - "vuid": "VUID-vkDestroyPipeline-pipeline-00767", - "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>pipeline</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" - }, - { "vuid": "VUID-vkDestroyPipeline-device-parameter", "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" }, @@ -15414,9 +16042,25 @@ "vuid": "VUID-vkDestroyPipeline-pipeline-parent", "text": " If <code>pipeline</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" } + ], + "!(VKSC_VERSION_1_0)": [ + { + "vuid": "VUID-vkDestroyPipeline-pipeline-00766", + "text": " If <code>VkAllocationCallbacks</code> were provided when <code>pipeline</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here" + }, + { + "vuid": "VUID-vkDestroyPipeline-pipeline-00767", + "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>pipeline</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" + } ] }, "vkCreatePipelineCache": { + "(VKSC_VERSION_1_0)+(VKSC_VERSION_1_0)": [ + { + "vuid": "VUID-vkCreatePipelineCache-device-05068", + "text": " The number of {objectnameplural} currently allocated from <code>device</code> plus {objectcount} <strong class=\"purple\">must</strong> be less than or equal to the total number of {objectnameplural} requested via <code>VkDeviceObjectReservationCreateInfo</code>::pname:{objectnamecamelcase}RequestCount specified when <code>device</code> was created" + } + ], "core": [ { "vuid": "VUID-vkCreatePipelineCache-device-parameter", @@ -15437,7 +16081,7 @@ ] }, "VkPipelineCacheCreateInfo": { - "core": [ + "!(VKSC_VERSION_1_0)": [ { "vuid": "VUID-VkPipelineCacheCreateInfo-initialDataSize-00768", "text": " If <code>initialDataSize</code> is not <code>0</code>, it <strong class=\"purple\">must</strong> be equal to the size of <code>pInitialData</code>, as returned by <code>vkGetPipelineCacheData</code> when <code>pInitialData</code> was originally retrieved" @@ -15445,8 +16089,34 @@ { "vuid": "VUID-VkPipelineCacheCreateInfo-initialDataSize-00769", "text": " If <code>initialDataSize</code> is not <code>0</code>, <code>pInitialData</code> <strong class=\"purple\">must</strong> have been retrieved from a previous call to <code>vkGetPipelineCacheData</code>" + } + ], + "(VK_VERSION_1_3,VK_EXT_pipeline_creation_cache_control)": [ + { + "vuid": "VUID-VkPipelineCacheCreateInfo-pipelineCreationCacheControl-02892", + "text": " If the <a href=\"#features-pipelineCreationCacheControl\"><code>pipelineCreationCacheControl</code></a> feature is not enabled, <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT</code>" + } + ], + "(VKSC_VERSION_1_0)": [ + { + "vuid": "VUID-VkPipelineCacheCreateInfo-flags-05043", + "text": " <code>flags</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_CACHE_CREATE_READ_ONLY_BIT</code>" + }, + { + "vuid": "VUID-VkPipelineCacheCreateInfo-flags-05044", + "text": " <code>flags</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_CACHE_CREATE_USE_APPLICATION_STORAGE_BIT</code>" + }, + { + "vuid": "VUID-VkPipelineCacheCreateInfo-pInitialData-05045", + "text": " The contents of this structure and data pointed to by <code>pInitialData</code> <strong class=\"purple\">must</strong> be the same as specified in one of the <code>VkDeviceObjectReservationCreateInfo</code>::<code>pPipelineCacheCreateInfos</code> structures when the device was created" }, { + "vuid": "VUID-VkPipelineCacheCreateInfo-pInitialData-05139", + "text": " The pipeline cache data pointed to by <code>pInitialData</code> <strong class=\"purple\">must</strong> not contain any pipelines with duplicate pipeline identifiers." + } + ], + "core": [ + { "vuid": "VUID-VkPipelineCacheCreateInfo-sType-sType", "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO</code>" }, @@ -15462,16 +16132,10 @@ "vuid": "VUID-VkPipelineCacheCreateInfo-pInitialData-parameter", "text": " If <code>initialDataSize</code> is not <code>0</code>, <code>pInitialData</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>initialDataSize</code> bytes" } - ], - "(VK_VERSION_1_3,VK_EXT_pipeline_creation_cache_control)": [ - { - "vuid": "VUID-VkPipelineCacheCreateInfo-pipelineCreationCacheControl-02892", - "text": " If the <a href=\"#features-pipelineCreationCacheControl\"><code>pipelineCreationCacheControl</code></a> feature is not enabled, <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT</code>" - } ] }, "vkMergePipelineCaches": { - "core": [ + "!(VKSC_VERSION_1_0)": [ { "vuid": "VUID-vkMergePipelineCaches-dstCache-00770", "text": " <code>dstCache</code> <strong class=\"purple\">must</strong> not appear in the list of source caches" @@ -15503,7 +16167,7 @@ ] }, "vkGetPipelineCacheData": { - "core": [ + "!(VKSC_VERSION_1_0)": [ { "vuid": "VUID-vkGetPipelineCacheData-device-parameter", "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" @@ -15527,7 +16191,7 @@ ] }, "VkPipelineCacheHeaderVersionOne": { - "core": [ + "!(VKSC_VERSION_1_0)": [ { "vuid": "VUID-VkPipelineCacheHeaderVersionOne-headerSize-04967", "text": " <code>headerSize</code> <strong class=\"purple\">must</strong> be 32" @@ -15535,15 +16199,83 @@ { "vuid": "VUID-VkPipelineCacheHeaderVersionOne-headerVersion-04968", "text": " <code>headerVersion</code> <strong class=\"purple\">must</strong> be <code>VK_PIPELINE_CACHE_HEADER_VERSION_ONE</code>" + } + ], + "(VKSC_VERSION_1_0)": [ + { + "vuid": "VUID-VkPipelineCacheHeaderVersionOne-headerSize-05075", + "text": " <code>headerSize</code> <strong class=\"purple\">must</strong> be 56" }, { + "vuid": "VUID-VkPipelineCacheHeaderVersionOne-headerVersion-05076", + "text": " <code>headerVersion</code> <strong class=\"purple\">must</strong> be <code>VK_PIPELINE_CACHE_HEADER_VERSION_SAFETY_CRITICAL_ONE</code>" + } + ], + "core": [ + { "vuid": "VUID-VkPipelineCacheHeaderVersionOne-headerVersion-parameter", "text": " <code>headerVersion</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineCacheHeaderVersion\">VkPipelineCacheHeaderVersion</a> value" } ] }, + "VkPipelineCacheHeaderVersionSafetyCriticalOne": { + "(VKSC_VERSION_1_0)": [ + { + "vuid": "VUID-VkPipelineCacheHeaderVersionSafetyCriticalOne-validationVersion-05077", + "text": " <code>validationVersion</code> <strong class=\"purple\">must</strong> be <code>VK_PIPELINE_CACHE_VALIDATION_VERSION_SAFETY_CRITICAL_ONE</code>" + }, + { + "vuid": "VUID-VkPipelineCacheHeaderVersionSafetyCriticalOne-pipelineIndexStride-05078", + "text": " <code>pipelineIndexStride</code> <strong class=\"purple\">must</strong> be greater than or equal to 56 (the size of the <code>VkPipelineCacheSafetyCriticalIndexEntry</code> structure)" + }, + { + "vuid": "VUID-VkPipelineCacheHeaderVersionSafetyCriticalOne-pipelineIndexOffset-05079", + "text": " <span class=\"eq\"><code>pipelineIndexOffset</code> + <code>pipelineIndexCount</code> {times} <code>pipelineIndexStride</code></span> <strong class=\"purple\">must</strong> not exceed the size of the pipeline cache" + } + ] + }, + "VkPipelineCacheSafetyCriticalIndexEntry": { + "(VKSC_VERSION_1_0)": [ + { + "vuid": "VUID-VkPipelineCacheSafetyCriticalIndexEntry-jsonSize-05080", + "text": " if <code>jsonSize</code> is 0, <code>jsonOffset</code> <strong class=\"purple\">must</strong> be 0" + }, + { + "vuid": "VUID-VkPipelineCacheSafetyCriticalIndexEntry-jsonSize-05081", + "text": " if <code>jsonSize</code> is 0, <code>stageIndexCount</code> <strong class=\"purple\">must</strong> be 0" + }, + { + "vuid": "VUID-VkPipelineCacheSafetyCriticalIndexEntry-stageIndexCount-05082", + "text": " if <code>stageIndexCount</code> is 0, <code>stageIndexOffset</code> and <code>stageIndexStride</code> <strong class=\"purple\">must</strong> be 0" + }, + { + "vuid": "VUID-VkPipelineCacheSafetyCriticalIndexEntry-stageIndexCount-05083", + "text": " if <code>stageIndexCount</code> is not 0, <code>stageIndexStride</code> <strong class=\"purple\">must</strong> be greater than or equal to 16 (the size of the <code>VkPipelineCacheStageValidationIndexEntry</code> structure)" + }, + { + "vuid": "VUID-VkPipelineCacheSafetyCriticalIndexEntry-stageIndexCount-05084", + "text": " if <code>stageIndexCount</code> is not 0, <span class=\"eq\"><code>stageIndexOffset</code> + <code>stageIndexCount</code> {times} <code>stageIndexStride</code></span> <strong class=\"purple\">must</strong> not exceed the size of the pipeline cache" + } + ] + }, + "VkPipelineCacheStageValidationIndexEntry": { + "(VKSC_VERSION_1_0)": [ + { + "vuid": "VUID-VkPipelineCacheStageValidationIndexEntry-codeSize-05085", + "text": " <code>codeSize</code> <strong class=\"purple\">must</strong> be greater than 0" + }, + { + "vuid": "VUID-VkPipelineCacheStageValidationIndexEntry-codeSize-05086", + "text": " <code>codeSize</code> <strong class=\"purple\">must</strong> be a multiple of 4" + }, + { + "vuid": "VUID-VkPipelineCacheStageValidationIndexEntry-codeOffset-05087", + "text": " <span class=\"eq\"><code>codeOffset</code> + <code>codeSize</code></span> <strong class=\"purple\">must</strong> not exceed the size of the pipeline cache" + } + ] + }, "vkDestroyPipelineCache": { - "core": [ + "!(VKSC_VERSION_1_0)": [ { "vuid": "VUID-vkDestroyPipelineCache-pipelineCache-00771", "text": " If <code>VkAllocationCallbacks</code> were provided when <code>pipelineCache</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here" @@ -15551,7 +16283,9 @@ { "vuid": "VUID-vkDestroyPipelineCache-pipelineCache-00772", "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>pipelineCache</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" - }, + } + ], + "core": [ { "vuid": "VUID-vkDestroyPipelineCache-device-parameter", "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" @@ -15570,6 +16304,22 @@ } ] }, + "VkPipelineOfflineCreateInfo": { + "(VKSC_VERSION_1_0)": [ + { + "vuid": "VUID-VkPipelineOfflineCreateInfo-poolEntrySize-05028", + "text": " <code>poolEntrySize</code> <strong class=\"purple\">must</strong> be one of the sizes requested via <code>VkPipelinePoolSize</code> when the device was created" + }, + { + "vuid": "VUID-VkPipelineOfflineCreateInfo-recyclePipelineMemory-05029", + "text": " If <code>VkPhysicalDeviceVulkanSC10Properties</code>::<code>recyclePipelineMemory</code> is <code>VK_TRUE</code>, the number of currently existing pipelines created with this same value of <code>poolEntrySize</code> plus 1 <strong class=\"purple\">must</strong> be less than or equal to the sum of the <code>VkPipelinePoolSize</code>::<code>poolEntryCount</code> values with the same value of <code>poolEntrySize</code>" + }, + { + "vuid": "VUID-VkPipelineOfflineCreateInfo-recyclePipelineMemory-05030", + "text": " If <code>VkPhysicalDeviceVulkanSC10Properties</code>::<code>recyclePipelineMemory</code> is <code>VK_FALSE</code>, the total number of pipelines ever created with this same value of <code>poolEntrySize</code> plus 1 <strong class=\"purple\">must</strong> be less than or equal to the sum of the <code>VkPipelinePoolSize</code>::<code>poolEntryCount</code> values with the same value of <code>poolEntrySize</code>" + } + ] + }, "VkSpecializationInfo": { "core": [ { @@ -16085,7 +16835,7 @@ ] }, "VkAllocationCallbacks": { - "core": [ + "!(VKSC_VERSION_1_0)": [ { "vuid": "VUID-VkAllocationCallbacks-pfnAllocation-00632", "text": " <code>pfnAllocation</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid user-defined <a href=\"#PFN_vkAllocationFunction\">PFN_vkAllocationFunction</a>" @@ -16188,16 +16938,22 @@ "vuid": "VUID-vkAllocateMemory-deviceCoherentMemory-02790", "text": " If the <a href=\"#features-deviceCoherentMemory\"><code>deviceCoherentMemory</code></a> feature is not enabled, <code>pAllocateInfo->memoryTypeIndex</code> <strong class=\"purple\">must</strong> not identify a memory type supporting <code>VK_MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD</code>" } + ], + "(VKSC_VERSION_1_0)": [ + { + "vuid": "VUID-vkAllocateMemory-device-05068", + "text": " The number of {objectnameplural} currently allocated from <code>device</code> plus {objectcount} <strong class=\"purple\">must</strong> be less than or equal to the total number of {objectnameplural} requested via <code>VkDeviceObjectReservationCreateInfo</code>::pname:{objectnamecamelcase}RequestCount specified when <code>device</code> was created" + } ] }, "VkMemoryAllocateInfo": { - "!(VK_KHR_external_memory_win32,VK_KHR_external_memory_fd,VK_EXT_external_memory_host,VK_ANDROID_external_memory_android_hardware_buffer,VK_FUCHSIA_external_memory)": [ + "!(VK_KHR_external_memory_win32,VK_KHR_external_memory_fd,VK_EXT_external_memory_host,VK_ANDROID_external_memory_android_hardware_buffer,VK_FUCHSIA_external_memory,VK_NV_external_memory_sci_buf)": [ { "vuid": "VUID-VkMemoryAllocateInfo-allocationSize-00638", "text": " <code>allocationSize</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" } ], - "(VK_KHR_external_memory_win32,VK_KHR_external_memory_fd,VK_EXT_external_memory_host,VK_ANDROID_external_memory_android_hardware_buffer,VK_FUCHSIA_external_memory)": [ + "(VK_KHR_external_memory_win32,VK_KHR_external_memory_fd,VK_EXT_external_memory_host,VK_ANDROID_external_memory_android_hardware_buffer,VK_FUCHSIA_external_memory,VK_NV_external_memory_sci_buf)": [ { "vuid": "VUID-VkMemoryAllocateInfo-None-06657", "text": " The parameters <strong class=\"purple\">must</strong> not define more than one <a href=\"#memory-import-operation\">import operation</a>" @@ -16207,13 +16963,13 @@ "text": " If the parameters do not define an <a href=\"#memory-import-operation\">import or export operation</a>, <code>allocationSize</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" } ], - "(VK_KHR_external_memory_win32,VK_KHR_external_memory_fd,VK_EXT_external_memory_host,VK_ANDROID_external_memory_android_hardware_buffer,VK_FUCHSIA_external_memory)+!(VK_ANDROID_external_memory_android_hardware_buffer)": [ + "(VK_KHR_external_memory_win32,VK_KHR_external_memory_fd,VK_EXT_external_memory_host,VK_ANDROID_external_memory_android_hardware_buffer,VK_FUCHSIA_external_memory,VK_NV_external_memory_sci_buf)+!(VK_ANDROID_external_memory_android_hardware_buffer)": [ { "vuid": "VUID-VkMemoryAllocateInfo-allocationSize-07898", "text": " If the parameters define an export operation, <code>allocationSize</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" } ], - "(VK_KHR_external_memory_win32,VK_KHR_external_memory_fd,VK_EXT_external_memory_host,VK_ANDROID_external_memory_android_hardware_buffer,VK_FUCHSIA_external_memory)+(VK_ANDROID_external_memory_android_hardware_buffer)": [ + "(VK_KHR_external_memory_win32,VK_KHR_external_memory_fd,VK_EXT_external_memory_host,VK_ANDROID_external_memory_android_hardware_buffer,VK_FUCHSIA_external_memory,VK_NV_external_memory_sci_buf)+(VK_ANDROID_external_memory_android_hardware_buffer)": [ { "vuid": "VUID-VkMemoryAllocateInfo-allocationSize-07899", "text": " If the parameters define an export operation and the handle type is not <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID</code>, <code>allocationSize</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" @@ -16417,6 +17173,20 @@ "text": " If the parameters define an import operation and the external handle type is <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_ZIRCON_VMO_BIT_FUCHSIA</code>, the value of <code>allocationSize</code> <strong class=\"purple\">must</strong> be less than or equal to the size of the VMO as determined by <code>zx_vmo_get_size</code>(<code>handle</code>) where <code>handle</code> is the VMO handle to the imported external memory" } ], + "(VK_NV_external_memory_sci_buf)": [ + { + "vuid": "VUID-VkMemoryAllocateInfo-pNext-05097", + "text": " If the <code>pNext</code> chain includes a <code>VkExportMemorySciBufInfoNV</code> structure, <code>VkPhysicalDeviceExternalMemorySciBufFeaturesNV</code>::<code>sciBufExport</code> <strong class=\"purple\">must</strong> be enabled" + }, + { + "vuid": "VUID-VkMemoryAllocateInfo-pNext-05098", + "text": " If the <code>pNext</code> chain includes a <code>VkImportMemorySciBufInfoNV</code> structure, <code>VkPhysicalDeviceExternalMemorySciBufFeaturesNV</code>::<code>sciBufImport</code> <strong class=\"purple\">must</strong> be enabled" + }, + { + "vuid": "VUID-VkMemoryAllocateInfo-memoryTypeIndex-05099", + "text": " If the parameters define an import operation and the external handle is a <code>NvSciBufObj</code>, the value of <code>memoryTypeIndex</code> <strong class=\"purple\">must</strong> be one of those returned by <code>vkGetPhysicalDeviceExternalMemorySciBufPropertiesNV</code>" + } + ], "(VK_EXT_metal_objects)": [ { "vuid": "VUID-VkMemoryAllocateInfo-pNext-06780", @@ -17524,6 +18294,50 @@ } ] }, + "VkExportMemorySciBufInfoNV": { + "(VK_NV_external_memory_sci_buf)": [ + { + "vuid": "VUID-VkExportMemorySciBufInfoNV-pAttributes-05100", + "text": " <code>pAttributes</code> <strong class=\"purple\">must</strong> be a reconciled <code>NvSciBufAttrList</code>" + } + ] + }, + "vkGetPhysicalDeviceSciBufAttributesNV": { + "(VK_NV_external_memory_sci_buf)": [ + { + "vuid": "VUID-vkGetPhysicalDeviceSciBufAttributesNV-pAttributes-05101", + "text": " <code>pAttributes</code> <strong class=\"purple\">must</strong> be a valid <code>NvSciBufAttrList</code> and <strong class=\"purple\">must</strong> not be <code>NULL</code>" + } + ] + }, + "VkImportMemorySciBufInfoNV": { + "(VK_NV_external_memory_sci_buf)": [ + { + "vuid": "VUID-VkImportMemorySciBufInfoNV-handleType-05102", + "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_SCI_BUF_BIT_NV</code>" + } + ] + }, + "VkMemoryGetSciBufInfoNV": { + "(VK_NV_external_memory_sci_buf)": [ + { + "vuid": "VUID-VkMemoryGetSciBufInfoNV-handleType-05103", + "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_SCI_BUF_BIT_NV</code>" + } + ] + }, + "vkGetPhysicalDeviceExternalMemorySciBufPropertiesNV": { + "(VK_NV_external_memory_sci_buf)": [ + { + "vuid": "VUID-vkGetPhysicalDeviceExternalMemorySciBufPropertiesNV-handleType-05104", + "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_SCI_BUF_BIT_NV</code>" + }, + { + "vuid": "VUID-vkGetPhysicalDeviceExternalMemorySciBufPropertiesNV-sciBufImport-05105", + "text": " <code>VkPhysicalDeviceExternalMemorySciBufFeaturesNV</code>::<code>sciBufImport</code> <strong class=\"purple\">must</strong> be enabled" + } + ] + }, "VkMemoryAllocateFlagsInfo": { "(VK_VERSION_1_1,VK_KHR_device_group)": [ { @@ -17553,7 +18367,7 @@ ] }, "vkFreeMemory": { - "core": [ + "!(VKSC_VERSION_1_0)": [ { "vuid": "VUID-vkFreeMemory-memory-00677", "text": " All submitted commands that refer to <code>memory</code> (via images or buffers) <strong class=\"purple\">must</strong> have completed execution" @@ -17909,11 +18723,25 @@ ] }, "vkCreateBuffer": { - "core": [ + "!(VKSC_VERSION_1_0)": [ { "vuid": "VUID-vkCreateBuffer-flags-00911", "text": " If the <code>flags</code> member of <code>pCreateInfo</code> includes <code>VK_BUFFER_CREATE_SPARSE_BINDING_BIT</code>, creating this <code>VkBuffer</code> <strong class=\"purple\">must</strong> not cause the total required sparse memory for all currently valid sparse resources on the device to exceed <code>VkPhysicalDeviceLimits</code>::<code>sparseAddressSpaceSize</code>" - }, + } + ], + "(VKSC_VERSION_1_0)": [ + { + "vuid": "VUID-vkCreateBuffer-device-05068", + "text": " The number of {objectnameplural} currently allocated from <code>device</code> plus {objectcount} <strong class=\"purple\">must</strong> be less than or equal to the total number of {objectnameplural} requested via <code>VkDeviceObjectReservationCreateInfo</code>::pname:{objectnamecamelcase}RequestCount specified when <code>device</code> was created" + } + ], + "(VK_FUCHSIA_buffer_collection)": [ + { + "vuid": "VUID-vkCreateBuffer-pNext-06387", + "text": " If using the <a href=\"#VkBuffer\">VkBuffer</a> for an import operation from a <a href=\"#VkBufferCollectionFUCHSIA\">VkBufferCollectionFUCHSIA</a> where a <a href=\"#VkBufferCollectionBufferCreateInfoFUCHSIA\">VkBufferCollectionBufferCreateInfoFUCHSIA</a> has been chained to <code>pNext</code>, <code>pCreateInfo</code> <strong class=\"purple\">must</strong> match the <a href=\"#VkBufferConstraintsInfoFUCHSIA\">VkBufferConstraintsInfoFUCHSIA</a>::<code>createInfo</code> used when setting the constraints on the buffer collection with <a href=\"#vkSetBufferCollectionBufferConstraintsFUCHSIA\">vkSetBufferCollectionBufferConstraintsFUCHSIA</a>" + } + ], + "core": [ { "vuid": "VUID-vkCreateBuffer-device-parameter", "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" @@ -17930,12 +18758,6 @@ "vuid": "VUID-vkCreateBuffer-pBuffer-parameter", "text": " <code>pBuffer</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkBuffer\">VkBuffer</a> handle" } - ], - "(VK_FUCHSIA_buffer_collection)": [ - { - "vuid": "VUID-vkCreateBuffer-pNext-06387", - "text": " If using the <a href=\"#VkBuffer\">VkBuffer</a> for an import operation from a <a href=\"#VkBufferCollectionFUCHSIA\">VkBufferCollectionFUCHSIA</a> where a <a href=\"#VkBufferCollectionBufferCreateInfoFUCHSIA\">VkBufferCollectionBufferCreateInfoFUCHSIA</a> has been chained to <code>pNext</code>, <code>pCreateInfo</code> <strong class=\"purple\">must</strong> match the <a href=\"#VkBufferConstraintsInfoFUCHSIA\">VkBufferConstraintsInfoFUCHSIA</a>::<code>createInfo</code> used when setting the constraints on the buffer collection with <a href=\"#vkSetBufferCollectionBufferConstraintsFUCHSIA\">vkSetBufferCollectionBufferConstraintsFUCHSIA</a>" - } ] }, "VkBufferCreateInfo": { @@ -17953,22 +18775,6 @@ "text": " If <code>sharingMode</code> is <code>VK_SHARING_MODE_CONCURRENT</code>, <code>queueFamilyIndexCount</code> <strong class=\"purple\">must</strong> be greater than <code>1</code>" }, { - "vuid": "VUID-VkBufferCreateInfo-flags-00915", - "text": " If the <a href=\"#features-sparseBinding\"><code>sparseBinding</code></a> feature is not enabled, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_BUFFER_CREATE_SPARSE_BINDING_BIT</code>" - }, - { - "vuid": "VUID-VkBufferCreateInfo-flags-00916", - "text": " If the <a href=\"#features-sparseResidencyBuffer\"><code>sparseResidencyBuffer</code></a> feature is not enabled, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code>" - }, - { - "vuid": "VUID-VkBufferCreateInfo-flags-00917", - "text": " If the <a href=\"#features-sparseResidencyAliased\"><code>sparseResidencyAliased</code></a> feature is not enabled, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_BUFFER_CREATE_SPARSE_ALIASED_BIT</code>" - }, - { - "vuid": "VUID-VkBufferCreateInfo-flags-00918", - "text": " If <code>flags</code> contains <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code> or <code>VK_BUFFER_CREATE_SPARSE_ALIASED_BIT</code>, it <strong class=\"purple\">must</strong> also contain <code>VK_BUFFER_CREATE_SPARSE_BINDING_BIT</code>" - }, - { "vuid": "VUID-VkBufferCreateInfo-sType-sType", "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO</code>" }, @@ -18009,6 +18815,30 @@ "text": " If <code>sharingMode</code> is <code>VK_SHARING_MODE_CONCURRENT</code>, each element of <code>pQueueFamilyIndices</code> <strong class=\"purple\">must</strong> be unique and <strong class=\"purple\">must</strong> be less than <code>pQueueFamilyPropertyCount</code> returned by either <a href=\"#vkGetPhysicalDeviceQueueFamilyProperties\">vkGetPhysicalDeviceQueueFamilyProperties</a> or <a href=\"#vkGetPhysicalDeviceQueueFamilyProperties2\">vkGetPhysicalDeviceQueueFamilyProperties2</a> for the <code>physicalDevice</code> that was used to create <code>device</code>" } ], + "!(VKSC_VERSION_1_0)": [ + { + "vuid": "VUID-VkBufferCreateInfo-flags-00915", + "text": " If the <a href=\"#features-sparseBinding\"><code>sparseBinding</code></a> feature is not enabled, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_BUFFER_CREATE_SPARSE_BINDING_BIT</code>" + }, + { + "vuid": "VUID-VkBufferCreateInfo-flags-00916", + "text": " If the <a href=\"#features-sparseResidencyBuffer\"><code>sparseResidencyBuffer</code></a> feature is not enabled, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code>" + }, + { + "vuid": "VUID-VkBufferCreateInfo-flags-00917", + "text": " If the <a href=\"#features-sparseResidencyAliased\"><code>sparseResidencyAliased</code></a> feature is not enabled, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_BUFFER_CREATE_SPARSE_ALIASED_BIT</code>" + }, + { + "vuid": "VUID-VkBufferCreateInfo-flags-00918", + "text": " If <code>flags</code> contains <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code> or <code>VK_BUFFER_CREATE_SPARSE_ALIASED_BIT</code>, it <strong class=\"purple\">must</strong> also contain <code>VK_BUFFER_CREATE_SPARSE_BINDING_BIT</code>" + } + ], + "(VKSC_VERSION_1_0)": [ + { + "vuid": "VUID-VkBufferCreateInfo-flags-05061", + "text": " <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_BUFFER_CREATE_SPARSE_BINDING_BIT</code>, <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code>, or <code>VK_BUFFER_CREATE_SPARSE_ALIASED_BIT</code>" + } + ], "(VK_VERSION_1_1,VK_KHR_external_memory)": [ { "vuid": "VUID-VkBufferCreateInfo-pNext-00920", @@ -18019,7 +18849,9 @@ { "vuid": "VUID-VkBufferCreateInfo-flags-01887", "text": " If the <a href=\"#features-protectedMemory\"><code>protectedMemory</code></a> feature is not enabled, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_BUFFER_CREATE_PROTECTED_BIT</code>" - }, + } + ], + "(VK_VERSION_1_1)+!(VKSC_VERSION_1_0)": [ { "vuid": "VUID-VkBufferCreateInfo-None-01888", "text": " If any of the bits <code>VK_BUFFER_CREATE_SPARSE_BINDING_BIT</code>, <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code>, or <code>VK_BUFFER_CREATE_SPARSE_ALIASED_BIT</code> are set, <code>VK_BUFFER_CREATE_PROTECTED_BIT</code> <strong class=\"purple\">must</strong> not also be set" @@ -18161,14 +18993,6 @@ "text": " All submitted commands that refer to <code>buffer</code>, either directly or via a <code>VkBufferView</code>, <strong class=\"purple\">must</strong> have completed execution" }, { - "vuid": "VUID-vkDestroyBuffer-buffer-00923", - "text": " If <code>VkAllocationCallbacks</code> were provided when <code>buffer</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here" - }, - { - "vuid": "VUID-vkDestroyBuffer-buffer-00924", - "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>buffer</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" - }, - { "vuid": "VUID-vkDestroyBuffer-device-parameter", "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" }, @@ -18184,9 +19008,25 @@ "vuid": "VUID-vkDestroyBuffer-buffer-parent", "text": " If <code>buffer</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" } + ], + "!(VKSC_VERSION_1_0)": [ + { + "vuid": "VUID-vkDestroyBuffer-buffer-00923", + "text": " If <code>VkAllocationCallbacks</code> were provided when <code>buffer</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here" + }, + { + "vuid": "VUID-vkDestroyBuffer-buffer-00924", + "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>buffer</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" + } ] }, "vkCreateBufferView": { + "(VKSC_VERSION_1_0)+(VKSC_VERSION_1_0)": [ + { + "vuid": "VUID-vkCreateBufferView-device-05068", + "text": " The number of {objectnameplural} currently allocated from <code>device</code> plus {objectcount} <strong class=\"purple\">must</strong> be less than or equal to the total number of {objectnameplural} requested via <code>VkDeviceObjectReservationCreateInfo</code>::pname:{objectnamecamelcase}RequestCount specified when <code>device</code> was created" + } + ], "core": [ { "vuid": "VUID-vkCreateBufferView-device-parameter", @@ -18307,14 +19147,6 @@ "text": " All submitted commands that refer to <code>bufferView</code> <strong class=\"purple\">must</strong> have completed execution" }, { - "vuid": "VUID-vkDestroyBufferView-bufferView-00937", - "text": " If <code>VkAllocationCallbacks</code> were provided when <code>bufferView</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here" - }, - { - "vuid": "VUID-vkDestroyBufferView-bufferView-00938", - "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>bufferView</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" - }, - { "vuid": "VUID-vkDestroyBufferView-device-parameter", "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" }, @@ -18330,14 +19162,38 @@ "vuid": "VUID-vkDestroyBufferView-bufferView-parent", "text": " If <code>bufferView</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" } + ], + "!(VKSC_VERSION_1_0)": [ + { + "vuid": "VUID-vkDestroyBufferView-bufferView-00937", + "text": " If <code>VkAllocationCallbacks</code> were provided when <code>bufferView</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here" + }, + { + "vuid": "VUID-vkDestroyBufferView-bufferView-00938", + "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>bufferView</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" + } ] }, "vkCreateImage": { - "core": [ + "!(VKSC_VERSION_1_0)": [ { "vuid": "VUID-vkCreateImage-flags-00939", "text": " If the <code>flags</code> member of <code>pCreateInfo</code> includes <code>VK_IMAGE_CREATE_SPARSE_BINDING_BIT</code>, creating this <code>VkImage</code> <strong class=\"purple\">must</strong> not cause the total required sparse memory for all currently valid sparse resources on the device to exceed <code>VkPhysicalDeviceLimits</code>::<code>sparseAddressSpaceSize</code>" - }, + } + ], + "(VKSC_VERSION_1_0)": [ + { + "vuid": "VUID-vkCreateImage-device-05068", + "text": " The number of {objectnameplural} currently allocated from <code>device</code> plus {objectcount} <strong class=\"purple\">must</strong> be less than or equal to the total number of {objectnameplural} requested via <code>VkDeviceObjectReservationCreateInfo</code>::pname:{objectnamecamelcase}RequestCount specified when <code>device</code> was created" + } + ], + "(VK_FUCHSIA_buffer_collection)": [ + { + "vuid": "VUID-vkCreateImage-pNext-06389", + "text": " If a <a href=\"#VkBufferCollectionImageCreateInfoFUCHSIA\">VkBufferCollectionImageCreateInfoFUCHSIA</a> has been chained to <code>pNext</code>, <code>pCreateInfo</code> <strong class=\"purple\">must</strong> match the <a href=\"#sysmem-chosen-create-infos\">Sysmem chosen <code>VkImageCreateInfo</code></a> excepting members <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>extent</code> and <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>usage</code> in the match criteria" + } + ], + "core": [ { "vuid": "VUID-vkCreateImage-device-parameter", "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" @@ -18354,12 +19210,6 @@ "vuid": "VUID-vkCreateImage-pImage-parameter", "text": " <code>pImage</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkImage\">VkImage</a> handle" } - ], - "(VK_FUCHSIA_buffer_collection)": [ - { - "vuid": "VUID-vkCreateImage-pNext-06389", - "text": " If a <a href=\"#VkBufferCollectionImageCreateInfoFUCHSIA\">VkBufferCollectionImageCreateInfoFUCHSIA</a> has been chained to <code>pNext</code>, <code>pCreateInfo</code> <strong class=\"purple\">must</strong> match the <a href=\"#sysmem-chosen-create-infos\">Sysmem chosen <code>VkImageCreateInfo</code></a> excepting members <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>extent</code> and <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>usage</code> in the match criteria" - } ] }, "VkImageCreateInfo": { @@ -18473,54 +19323,6 @@ "text": " If the <a href=\"#features-shaderStorageImageMultisample\"><code>shaderStorageImageMultisample</code></a> feature is not enabled, and <code>usage</code> contains <code>VK_IMAGE_USAGE_STORAGE_BIT</code>, <code>samples</code> <strong class=\"purple\">must</strong> be <code>VK_SAMPLE_COUNT_1_BIT</code>" }, { - "vuid": "VUID-VkImageCreateInfo-flags-00969", - "text": " If the <a href=\"#features-sparseBinding\"><code>sparseBinding</code></a> feature is not enabled, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_CREATE_SPARSE_BINDING_BIT</code>" - }, - { - "vuid": "VUID-VkImageCreateInfo-flags-01924", - "text": " If the <a href=\"#features-sparseResidencyAliased\"><code>sparseResidencyAliased</code></a> feature is not enabled, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_CREATE_SPARSE_ALIASED_BIT</code>" - }, - { - "vuid": "VUID-VkImageCreateInfo-tiling-04121", - "text": " If <code>tiling</code> is <code>VK_IMAGE_TILING_LINEAR</code>, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code>" - }, - { - "vuid": "VUID-VkImageCreateInfo-imageType-00970", - "text": " If <code>imageType</code> is <code>VK_IMAGE_TYPE_1D</code>, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code>" - }, - { - "vuid": "VUID-VkImageCreateInfo-imageType-00971", - "text": " If the <a href=\"#features-sparseResidencyImage2D\"><code>sparseResidencyImage2D</code></a> feature is not enabled, and <code>imageType</code> is <code>VK_IMAGE_TYPE_2D</code>, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code>" - }, - { - "vuid": "VUID-VkImageCreateInfo-imageType-00972", - "text": " If the <a href=\"#features-sparseResidencyImage3D\"><code>sparseResidencyImage3D</code></a> feature is not enabled, and <code>imageType</code> is <code>VK_IMAGE_TYPE_3D</code>, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code>" - }, - { - "vuid": "VUID-VkImageCreateInfo-imageType-00973", - "text": " If the <a href=\"#features-sparseResidency2Samples\"><code>sparseResidency2Samples</code></a> feature is not enabled, <code>imageType</code> is <code>VK_IMAGE_TYPE_2D</code>, and <code>samples</code> is <code>VK_SAMPLE_COUNT_2_BIT</code>, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code>" - }, - { - "vuid": "VUID-VkImageCreateInfo-imageType-00974", - "text": " If the <a href=\"#features-sparseResidency4Samples\"><code>sparseResidency4Samples</code></a> feature is not enabled, <code>imageType</code> is <code>VK_IMAGE_TYPE_2D</code>, and <code>samples</code> is <code>VK_SAMPLE_COUNT_4_BIT</code>, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code>" - }, - { - "vuid": "VUID-VkImageCreateInfo-imageType-00975", - "text": " If the <a href=\"#features-sparseResidency8Samples\"><code>sparseResidency8Samples</code></a> feature is not enabled, <code>imageType</code> is <code>VK_IMAGE_TYPE_2D</code>, and <code>samples</code> is <code>VK_SAMPLE_COUNT_8_BIT</code>, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code>" - }, - { - "vuid": "VUID-VkImageCreateInfo-imageType-00976", - "text": " If the <a href=\"#features-sparseResidency16Samples\"><code>sparseResidency16Samples</code></a> feature is not enabled, <code>imageType</code> is <code>VK_IMAGE_TYPE_2D</code>, and <code>samples</code> is <code>VK_SAMPLE_COUNT_16_BIT</code>, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code>" - }, - { - "vuid": "VUID-VkImageCreateInfo-flags-00987", - "text": " If <code>flags</code> contains <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code> or <code>VK_IMAGE_CREATE_SPARSE_ALIASED_BIT</code>, it <strong class=\"purple\">must</strong> also contain <code>VK_IMAGE_CREATE_SPARSE_BINDING_BIT</code>" - }, - { - "vuid": "VUID-VkImageCreateInfo-None-01925", - "text": " If any of the bits <code>VK_IMAGE_CREATE_SPARSE_BINDING_BIT</code>, <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code>, or <code>VK_IMAGE_CREATE_SPARSE_ALIASED_BIT</code> are set, <code>VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT</code> <strong class=\"purple\">must</strong> not also be set" - }, - { "vuid": "VUID-VkImageCreateInfo-initialLayout-00993", "text": " <code>initialLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_UNDEFINED</code> or <code>VK_IMAGE_LAYOUT_PREINITIALIZED</code>" }, @@ -18679,11 +19481,69 @@ "text": " If the <a href=\"#features-fragmentDensityMapOffsets\"><code>fragmentDensityMapOffset</code></a> feature is not enabled and <code>usage</code> includes <code>VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT</code>, <code>extent.height</code> <strong class=\"purple\">must</strong> be less than or equal to \\(\\left\\lceil{\\frac{maxFramebufferHeight}{minFragmentDensityTexelSize_{height}}}\\right\\rceil\\)" } ], + "!(VKSC_VERSION_1_0)": [ + { + "vuid": "VUID-VkImageCreateInfo-flags-00969", + "text": " If the <a href=\"#features-sparseBinding\"><code>sparseBinding</code></a> feature is not enabled, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_CREATE_SPARSE_BINDING_BIT</code>" + }, + { + "vuid": "VUID-VkImageCreateInfo-flags-01924", + "text": " If the <a href=\"#features-sparseResidencyAliased\"><code>sparseResidencyAliased</code></a> feature is not enabled, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_CREATE_SPARSE_ALIASED_BIT</code>" + }, + { + "vuid": "VUID-VkImageCreateInfo-tiling-04121", + "text": " If <code>tiling</code> is <code>VK_IMAGE_TILING_LINEAR</code>, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code>" + }, + { + "vuid": "VUID-VkImageCreateInfo-imageType-00970", + "text": " If <code>imageType</code> is <code>VK_IMAGE_TYPE_1D</code>, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code>" + }, + { + "vuid": "VUID-VkImageCreateInfo-imageType-00971", + "text": " If the <a href=\"#features-sparseResidencyImage2D\"><code>sparseResidencyImage2D</code></a> feature is not enabled, and <code>imageType</code> is <code>VK_IMAGE_TYPE_2D</code>, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code>" + }, + { + "vuid": "VUID-VkImageCreateInfo-imageType-00972", + "text": " If the <a href=\"#features-sparseResidencyImage3D\"><code>sparseResidencyImage3D</code></a> feature is not enabled, and <code>imageType</code> is <code>VK_IMAGE_TYPE_3D</code>, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code>" + }, + { + "vuid": "VUID-VkImageCreateInfo-imageType-00973", + "text": " If the <a href=\"#features-sparseResidency2Samples\"><code>sparseResidency2Samples</code></a> feature is not enabled, <code>imageType</code> is <code>VK_IMAGE_TYPE_2D</code>, and <code>samples</code> is <code>VK_SAMPLE_COUNT_2_BIT</code>, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code>" + }, + { + "vuid": "VUID-VkImageCreateInfo-imageType-00974", + "text": " If the <a href=\"#features-sparseResidency4Samples\"><code>sparseResidency4Samples</code></a> feature is not enabled, <code>imageType</code> is <code>VK_IMAGE_TYPE_2D</code>, and <code>samples</code> is <code>VK_SAMPLE_COUNT_4_BIT</code>, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code>" + }, + { + "vuid": "VUID-VkImageCreateInfo-imageType-00975", + "text": " If the <a href=\"#features-sparseResidency8Samples\"><code>sparseResidency8Samples</code></a> feature is not enabled, <code>imageType</code> is <code>VK_IMAGE_TYPE_2D</code>, and <code>samples</code> is <code>VK_SAMPLE_COUNT_8_BIT</code>, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code>" + }, + { + "vuid": "VUID-VkImageCreateInfo-imageType-00976", + "text": " If the <a href=\"#features-sparseResidency16Samples\"><code>sparseResidency16Samples</code></a> feature is not enabled, <code>imageType</code> is <code>VK_IMAGE_TYPE_2D</code>, and <code>samples</code> is <code>VK_SAMPLE_COUNT_16_BIT</code>, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code>" + }, + { + "vuid": "VUID-VkImageCreateInfo-flags-00987", + "text": " If <code>flags</code> contains <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code> or <code>VK_IMAGE_CREATE_SPARSE_ALIASED_BIT</code>, it <strong class=\"purple\">must</strong> also contain <code>VK_IMAGE_CREATE_SPARSE_BINDING_BIT</code>" + }, + { + "vuid": "VUID-VkImageCreateInfo-None-01925", + "text": " If any of the bits <code>VK_IMAGE_CREATE_SPARSE_BINDING_BIT</code>, <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code>, or <code>VK_IMAGE_CREATE_SPARSE_ALIASED_BIT</code> are set, <code>VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT</code> <strong class=\"purple\">must</strong> not also be set" + } + ], + "(VKSC_VERSION_1_0)": [ + { + "vuid": "VUID-VkImageCreateInfo-flags-05062", + "text": " <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_CREATE_SPARSE_BINDING_BIT</code>, <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code>, <code>VK_IMAGE_CREATE_SPARSE_ALIASED_BIT</code>, or <code>VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT</code>" + } + ], "(VK_VERSION_1_1)": [ { "vuid": "VUID-VkImageCreateInfo-flags-01890", "text": " If the <a href=\"#features-protectedMemory\"><code>protectedMemory</code></a> feature is not enabled, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_CREATE_PROTECTED_BIT</code>" - }, + } + ], + "(VK_VERSION_1_1)+!(VKSC_VERSION_1_0)": [ { "vuid": "VUID-VkImageCreateInfo-None-01891", "text": " If any of the bits <code>VK_IMAGE_CREATE_SPARSE_BINDING_BIT</code>, <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code>, or <code>VK_IMAGE_CREATE_SPARSE_ALIASED_BIT</code> are set, <code>VK_IMAGE_CREATE_PROTECTED_BIT</code> <strong class=\"purple\">must</strong> not also be set" @@ -18707,7 +19567,7 @@ "text": " If the <code>pNext</code> chain includes a <a href=\"#VkExternalMemoryImageCreateInfoNV\">VkExternalMemoryImageCreateInfoNV</a> structure, its <code>handleTypes</code> member <strong class=\"purple\">must</strong> only contain bits that are also in <a href=\"#VkExternalImageFormatPropertiesNV\">VkExternalImageFormatPropertiesNV</a>::<code>externalMemoryProperties.compatibleHandleTypes</code>, as returned by <a href=\"#vkGetPhysicalDeviceExternalImageFormatPropertiesNV\">vkGetPhysicalDeviceExternalImageFormatPropertiesNV</a> with <code>format</code>, <code>imageType</code>, <code>tiling</code>, <code>usage</code>, and <code>flags</code> equal to those in this structure, and with <code>externalHandleType</code> equal to any one of the handle types specified in <a href=\"#VkExternalMemoryImageCreateInfoNV\">VkExternalMemoryImageCreateInfoNV</a>::<code>handleTypes</code>" } ], - "(VK_VERSION_1_1,VK_KHR_device_group)": [ + "(VK_VERSION_1_1,VK_KHR_device_group)+!(VKSC_VERSION_1_0)": [ { "vuid": "VUID-VkImageCreateInfo-physicalDeviceCount-01421", "text": " If the logical device was created with <a href=\"#VkDeviceGroupDeviceCreateInfo\">VkDeviceGroupDeviceCreateInfo</a>::<code>physicalDeviceCount</code> equal to 1, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT</code>" @@ -19395,14 +20255,6 @@ "text": " All submitted commands that refer to <code>image</code>, either directly or via a <code>VkImageView</code>, <strong class=\"purple\">must</strong> have completed execution" }, { - "vuid": "VUID-vkDestroyImage-image-01001", - "text": " If <code>VkAllocationCallbacks</code> were provided when <code>image</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here" - }, - { - "vuid": "VUID-vkDestroyImage-image-01002", - "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>image</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" - }, - { "vuid": "VUID-vkDestroyImage-device-parameter", "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" }, @@ -19419,6 +20271,16 @@ "text": " If <code>image</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" } ], + "!(VKSC_VERSION_1_0)": [ + { + "vuid": "VUID-vkDestroyImage-image-01001", + "text": " If <code>VkAllocationCallbacks</code> were provided when <code>image</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here" + }, + { + "vuid": "VUID-vkDestroyImage-image-01002", + "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>image</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" + } + ], "(VK_KHR_swapchain)": [ { "vuid": "VUID-vkDestroyImage-image-04882", @@ -19427,6 +20289,18 @@ ] }, "vkCreateImageView": { + "(VKSC_VERSION_1_0)+(VKSC_VERSION_1_0)": [ + { + "vuid": "VUID-vkCreateImageView-device-05068", + "text": " The number of {objectnameplural} currently allocated from <code>device</code> plus {objectcount} <strong class=\"purple\">must</strong> be less than or equal to the total number of {objectnameplural} requested via <code>VkDeviceObjectReservationCreateInfo</code>::pname:{objectnamecamelcase}RequestCount specified when <code>device</code> was created" + } + ], + "(VKSC_VERSION_1_0)": [ + { + "vuid": "VUID-vkCreateImageView-subresourceRange-05063", + "text": " If <a href=\"#VkImageViewCreateInfo\">VkImageViewCreateInfo</a>::<code>subresourceRange.layerCount</code> is greater than <code>1</code>, the number of image views with more than one array layer currently allocated from <code>device</code> plus <code>1</code> <strong class=\"purple\">must</strong> be less than or equal to the total number of image views requested via <code>VkDeviceObjectReservationCreateInfo</code>::<code>layeredImageViewRequestCount</code> specified when <code>device</code> was created" + } + ], "core": [ { "vuid": "VUID-vkCreateImageView-device-parameter", @@ -19571,10 +20445,6 @@ "text": " If <code>image</code> was created with <code>VK_IMAGE_TYPE_3D</code> and <code>viewType</code> is <code>VK_IMAGE_VIEW_TYPE_2D</code> or <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code> then <code>subresourceRange.levelCount</code> <strong class=\"purple\">must</strong> be 1" }, { - "vuid": "VUID-VkImageViewCreateInfo-image-04971", - "text": " If <code>image</code> was created with <code>VK_IMAGE_TYPE_3D</code> and <code>viewType</code> is <code>VK_IMAGE_VIEW_TYPE_2D</code> or <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code> then <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>flags</code> <strong class=\"purple\">must</strong> not contain any of <code>VK_IMAGE_CREATE_SPARSE_BINDING_BIT</code>, <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code>, and <code>VK_IMAGE_CREATE_SPARSE_ALIASED_BIT</code>" - }, - { "vuid": "VUID-VkImageViewCreateInfo-image-04972", "text": " If <code>image</code> was created with a <code>samples</code> value not equal to <code>VK_SAMPLE_COUNT_1_BIT</code> then <code>viewType</code> <strong class=\"purple\">must</strong> be either <code>VK_IMAGE_VIEW_TYPE_2D</code> or <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code>" }, @@ -19615,6 +20485,12 @@ "text": " If <code>subresourceRange.layerCount</code> is not <code>VK_REMAINING_ARRAY_LAYERS</code>, <code>image</code> is not a 3D image created with <code>VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT</code> or <code>VK_IMAGE_CREATE_2D_VIEW_COMPATIBLE_BIT_EXT</code> set, or <code>viewType</code> is not <code>VK_IMAGE_VIEW_TYPE_2D</code> or <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code>, <code>subresourceRange.layerCount</code> <strong class=\"purple\">must</strong> be non-zero and <span class=\"eq\"><code>subresourceRange.baseArrayLayer</code> + <code>subresourceRange.layerCount</code></span> <strong class=\"purple\">must</strong> be less than or equal to the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created" } ], + "(VK_VERSION_1_1,VK_KHR_maintenance1)+!(VKSC_VERSION_1_0)": [ + { + "vuid": "VUID-VkImageViewCreateInfo-image-04971", + "text": " If <code>image</code> was created with <code>VK_IMAGE_TYPE_3D</code> and <code>viewType</code> is <code>VK_IMAGE_VIEW_TYPE_2D</code> or <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code> then <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>flags</code> <strong class=\"purple\">must</strong> not contain any of <code>VK_IMAGE_CREATE_SPARSE_BINDING_BIT</code>, <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code>, and <code>VK_IMAGE_CREATE_SPARSE_ALIASED_BIT</code>" + } + ], "(VK_NV_linear_color_attachment)": [ { "vuid": "VUID-VkImageViewCreateInfo-usage-06516", @@ -19815,6 +20691,20 @@ "text": " If the <code><a href=\"#VK_KHR_portability_subset\">VK_KHR_portability_subset</a></code> extension is enabled, and <a href=\"#VkPhysicalDevicePortabilitySubsetFeaturesKHR\">VkPhysicalDevicePortabilitySubsetFeaturesKHR</a>::<code>imageViewFormatReinterpretation</code> is <code>VK_FALSE</code>, the <a href=\"#VkFormat\">VkFormat</a> in <code>format</code> <strong class=\"purple\">must</strong> not contain a different number of components, or a different number of bits in each component, than the format of the <code>VkImage</code> in <code>image</code>" } ], + "(VKSC_VERSION_1_0)": [ + { + "vuid": "VUID-VkImageViewCreateInfo-subresourceRange-05064", + "text": " <code>subresourceRange.levelCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkDeviceObjectReservationCreateInfo</code>::<code>maxImageViewMipLevels</code>" + }, + { + "vuid": "VUID-VkImageViewCreateInfo-subresourceRange-05065", + "text": " <code>subresourceRange.layerCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkDeviceObjectReservationCreateInfo</code>::<code>maxImageViewArrayLayers</code>" + }, + { + "vuid": "VUID-VkImageViewCreateInfo-subresourceRange-05066", + "text": " If <code>subresourceRange.layerCount</code> is greater than <code>1</code>, <code>subresourceRange.levelCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkDeviceObjectReservationCreateInfo</code>::<code>maxLayeredImageViewMipLevels</code>" + } + ], "(VK_KHR_video_decode_queue)": [ { "vuid": "VUID-VkImageViewCreateInfo-image-04817", @@ -20069,14 +20959,6 @@ "text": " All submitted commands that refer to <code>imageView</code> <strong class=\"purple\">must</strong> have completed execution" }, { - "vuid": "VUID-vkDestroyImageView-imageView-01027", - "text": " If <code>VkAllocationCallbacks</code> were provided when <code>imageView</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here" - }, - { - "vuid": "VUID-vkDestroyImageView-imageView-01028", - "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>imageView</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" - }, - { "vuid": "VUID-vkDestroyImageView-device-parameter", "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" }, @@ -20092,6 +20974,16 @@ "vuid": "VUID-vkDestroyImageView-imageView-parent", "text": " If <code>imageView</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" } + ], + "!(VKSC_VERSION_1_0)": [ + { + "vuid": "VUID-vkDestroyImageView-imageView-01027", + "text": " If <code>VkAllocationCallbacks</code> were provided when <code>imageView</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here" + }, + { + "vuid": "VUID-vkDestroyImageView-imageView-01028", + "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>imageView</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" + } ] }, "vkGetImageViewHandleNVX": { @@ -20635,14 +21527,6 @@ "text": " All submitted commands that refer to <code>accelerationStructure</code> <strong class=\"purple\">must</strong> have completed execution" }, { - "vuid": "VUID-vkDestroyAccelerationStructureKHR-accelerationStructure-02443", - "text": " If <code>VkAllocationCallbacks</code> were provided when <code>accelerationStructure</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here" - }, - { - "vuid": "VUID-vkDestroyAccelerationStructureKHR-accelerationStructure-02444", - "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>accelerationStructure</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" - }, - { "vuid": "VUID-vkDestroyAccelerationStructureKHR-device-parameter", "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" }, @@ -20658,6 +21542,16 @@ "vuid": "VUID-vkDestroyAccelerationStructureKHR-accelerationStructure-parent", "text": " If <code>accelerationStructure</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" } + ], + "(VK_NV_ray_tracing,VK_KHR_acceleration_structure)+!(VKSC_VERSION_1_0)": [ + { + "vuid": "VUID-vkDestroyAccelerationStructureKHR-accelerationStructure-02443", + "text": " If <code>VkAllocationCallbacks</code> were provided when <code>accelerationStructure</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here" + }, + { + "vuid": "VUID-vkDestroyAccelerationStructureKHR-accelerationStructure-02444", + "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>accelerationStructure</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" + } ] }, "vkDestroyAccelerationStructureNV": { @@ -20667,14 +21561,6 @@ "text": " All submitted commands that refer to <code>accelerationStructure</code> <strong class=\"purple\">must</strong> have completed execution" }, { - "vuid": "VUID-vkDestroyAccelerationStructureNV-accelerationStructure-03753", - "text": " If <code>VkAllocationCallbacks</code> were provided when <code>accelerationStructure</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here" - }, - { - "vuid": "VUID-vkDestroyAccelerationStructureNV-accelerationStructure-03754", - "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>accelerationStructure</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" - }, - { "vuid": "VUID-vkDestroyAccelerationStructureNV-device-parameter", "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" }, @@ -20690,6 +21576,16 @@ "vuid": "VUID-vkDestroyAccelerationStructureNV-accelerationStructure-parent", "text": " If <code>accelerationStructure</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" } + ], + "(VK_NV_ray_tracing,VK_KHR_acceleration_structure)+(VK_NV_ray_tracing)+!(VKSC_VERSION_1_0)": [ + { + "vuid": "VUID-vkDestroyAccelerationStructureNV-accelerationStructure-03753", + "text": " If <code>VkAllocationCallbacks</code> were provided when <code>accelerationStructure</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here" + }, + { + "vuid": "VUID-vkDestroyAccelerationStructureNV-accelerationStructure-03754", + "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>accelerationStructure</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" + } ] }, "vkGetAccelerationStructureMemoryRequirementsNV": { @@ -21381,7 +22277,7 @@ "text": " If <code>buffer</code> was not created with <a href=\"#VkDedicatedAllocationBufferCreateInfoNV\">VkDedicatedAllocationBufferCreateInfoNV</a>::<code>dedicatedAllocation</code> equal to <code>VK_TRUE</code>, <code>memory</code> <strong class=\"purple\">must</strong> not have been allocated dedicated for a specific buffer or image" } ], - "(VK_NV_dedicated_allocation)+(VK_VERSION_1_1,VK_KHR_dedicated_allocation)": [ + "(VK_NV_dedicated_allocation)+(VK_VERSION_1_1,VK_KHR_dedicated_allocation)+!(VKSC_VERSION_1_0)": [ { "vuid": "VUID-vkBindBufferMemory-apiVersion-07920", "text": " If the <a href=\"#VK_KHR_dedicated_allocation\">VK_KHR_dedicated_allocation</a> extension is not enabled, <a href=\"#VkPhysicalDeviceProperties\">VkPhysicalDeviceProperties</a>::<code>apiVersion</code> is less than Vulkan 1.1, and <code>buffer</code> was not created with <a href=\"#VkDedicatedAllocationBufferCreateInfoNV\">VkDedicatedAllocationBufferCreateInfoNV</a>::<code>dedicatedAllocation</code> equal to <code>VK_TRUE</code>, <code>memory</code> <strong class=\"purple\">must</strong> not have been allocated dedicated for a specific buffer or image" @@ -21527,7 +22423,7 @@ "text": " If <code>buffer</code> was not created with <a href=\"#VkDedicatedAllocationBufferCreateInfoNV\">VkDedicatedAllocationBufferCreateInfoNV</a>::<code>dedicatedAllocation</code> equal to <code>VK_TRUE</code>, <code>memory</code> <strong class=\"purple\">must</strong> not have been allocated dedicated for a specific buffer or image" } ], - "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_NV_dedicated_allocation)+(VK_VERSION_1_1,VK_KHR_dedicated_allocation)": [ + "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_NV_dedicated_allocation)+(VK_VERSION_1_1,VK_KHR_dedicated_allocation)+!(VKSC_VERSION_1_0)": [ { "vuid": "VUID-VkBindBufferMemoryInfo-apiVersion-07920", "text": " If the <a href=\"#VK_KHR_dedicated_allocation\">VK_KHR_dedicated_allocation</a> extension is not enabled, <a href=\"#VkPhysicalDeviceProperties\">VkPhysicalDeviceProperties</a>::<code>apiVersion</code> is less than Vulkan 1.1, and <code>buffer</code> was not created with <a href=\"#VkDedicatedAllocationBufferCreateInfoNV\">VkDedicatedAllocationBufferCreateInfoNV</a>::<code>dedicatedAllocation</code> equal to <code>VK_TRUE</code>, <code>memory</code> <strong class=\"purple\">must</strong> not have been allocated dedicated for a specific buffer or image" @@ -21691,7 +22587,7 @@ "text": " If <code>image</code> was not created with <a href=\"#VkDedicatedAllocationImageCreateInfoNV\">VkDedicatedAllocationImageCreateInfoNV</a>::<code>dedicatedAllocation</code> equal to <code>VK_TRUE</code>, <code>memory</code> <strong class=\"purple\">must</strong> not have been allocated dedicated for a specific buffer or image" } ], - "(VK_NV_dedicated_allocation)+(VK_VERSION_1_1,VK_KHR_dedicated_allocation)": [ + "(VK_NV_dedicated_allocation)+(VK_VERSION_1_1,VK_KHR_dedicated_allocation)+!(VKSC_VERSION_1_0)": [ { "vuid": "VUID-vkBindImageMemory-apiVersion-07921", "text": " If the <a href=\"#VK_KHR_dedicated_allocation\">VK_KHR_dedicated_allocation</a> extension is not enabled, <a href=\"#VkPhysicalDeviceProperties\">VkPhysicalDeviceProperties</a>::<code>apiVersion</code> is less than Vulkan 1.1, and <code>image</code> was not created with <a href=\"#VkDedicatedAllocationImageCreateInfoNV\">VkDedicatedAllocationImageCreateInfoNV</a>::<code>dedicatedAllocation</code> equal to <code>VK_TRUE</code>, <code>memory</code> <strong class=\"purple\">must</strong> not have been allocated dedicated for a specific buffer or image" @@ -21843,7 +22739,7 @@ "text": " If <code>image</code> was not created with <a href=\"#VkDedicatedAllocationImageCreateInfoNV\">VkDedicatedAllocationImageCreateInfoNV</a>::<code>dedicatedAllocation</code> equal to <code>VK_TRUE</code>, <code>memory</code> <strong class=\"purple\">must</strong> not have been allocated dedicated for a specific buffer or image" } ], - "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_NV_dedicated_allocation)+(VK_VERSION_1_1,VK_KHR_dedicated_allocation)": [ + "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_NV_dedicated_allocation)+(VK_VERSION_1_1,VK_KHR_dedicated_allocation)+!(VKSC_VERSION_1_0)": [ { "vuid": "VUID-VkBindImageMemoryInfo-apiVersion-07921", "text": " If the <a href=\"#VK_KHR_dedicated_allocation\">VK_KHR_dedicated_allocation</a> extension is not enabled, <a href=\"#VkPhysicalDeviceProperties\">VkPhysicalDeviceProperties</a>::<code>apiVersion</code> is less than Vulkan 1.1, and <code>image</code> was not created with <a href=\"#VkDedicatedAllocationImageCreateInfoNV\">VkDedicatedAllocationImageCreateInfoNV</a>::<code>dedicatedAllocation</code> equal to <code>VK_TRUE</code>, <code>memory</code> <strong class=\"purple\">must</strong> not have been allocated dedicated for a specific buffer or image" @@ -21935,7 +22831,9 @@ { "vuid": "VUID-VkBindImageMemoryInfo-pNext-01626", "text": " If the <code>pNext</code> chain includes a <a href=\"#VkBindImageMemoryDeviceGroupInfo\">VkBindImageMemoryDeviceGroupInfo</a> structure, all instances of <code>memory</code> specified by <a href=\"#VkBindImageMemoryDeviceGroupInfo\">VkBindImageMemoryDeviceGroupInfo</a>::<code>pDeviceIndices</code> <strong class=\"purple\">must</strong> have been allocated" - }, + } + ], + "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_device_group)+!(VKSC_VERSION_1_0)": [ { "vuid": "VUID-VkBindImageMemoryInfo-pNext-01627", "text": " If the <code>pNext</code> chain includes a <a href=\"#VkBindImageMemoryDeviceGroupInfo\">VkBindImageMemoryDeviceGroupInfo</a> structure, and <a href=\"#VkBindImageMemoryDeviceGroupInfo\">VkBindImageMemoryDeviceGroupInfo</a>::<code>splitInstanceBindRegionCount</code> is not zero, then <code>image</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT</code> bit set" @@ -21965,20 +22863,12 @@ ] }, "VkBindImageMemoryDeviceGroupInfo": { - "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_device_group)": [ + "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_device_group)+!(VKSC_VERSION_1_0)": [ { "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-deviceIndexCount-01633", "text": " At least one of <code>deviceIndexCount</code> and <code>splitInstanceBindRegionCount</code> <strong class=\"purple\">must</strong> be zero" }, { - "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-deviceIndexCount-01634", - "text": " <code>deviceIndexCount</code> <strong class=\"purple\">must</strong> either be zero or equal to the number of physical devices in the logical device" - }, - { - "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-pDeviceIndices-01635", - "text": " All elements of <code>pDeviceIndices</code> <strong class=\"purple\">must</strong> be valid device indices" - }, - { "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-splitInstanceBindRegionCount-01636", "text": " <code>splitInstanceBindRegionCount</code> <strong class=\"purple\">must</strong> either be zero or equal to the number of physical devices in the logical device squared" }, @@ -22001,6 +22891,16 @@ { "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-extent-01641", "text": " The <code>extent.height</code> member of any element of <code>pSplitInstanceBindRegions</code> <strong class=\"purple\">must</strong> either be a multiple of the sparse image block height of all non-metadata aspects of the image, or else <code>extent.height</code> + <code>offset.y</code> <strong class=\"purple\">must</strong> equal the height of the image subresource" + } + ], + "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_device_group)": [ + { + "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-deviceIndexCount-01634", + "text": " <code>deviceIndexCount</code> <strong class=\"purple\">must</strong> either be zero or equal to the number of physical devices in the logical device" + }, + { + "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-pDeviceIndices-01635", + "text": " All elements of <code>pDeviceIndices</code> <strong class=\"purple\">must</strong> be valid device indices" }, { "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-sType-sType", @@ -22014,6 +22914,12 @@ "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-pSplitInstanceBindRegions-parameter", "text": " If <code>splitInstanceBindRegionCount</code> is not <code>0</code>, <code>pSplitInstanceBindRegions</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>splitInstanceBindRegionCount</code> <a href=\"#VkRect2D\">VkRect2D</a> structures" } + ], + "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_device_group)+(VKSC_VERSION_1_0)": [ + { + "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-splitInstanceBindRegionCount-05067", + "text": " <code>splitInstanceBindRegionCount</code> <strong class=\"purple\">must</strong> be zero" + } ] }, "VkBindImageMemorySwapchainInfoKHR": { @@ -22430,6 +23336,12 @@ "vuid": "VUID-vkCreateSampler-pSampler-parameter", "text": " <code>pSampler</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkSampler\">VkSampler</a> handle" } + ], + "(VKSC_VERSION_1_0)": [ + { + "vuid": "VUID-vkCreateSampler-device-05068", + "text": " The number of {objectnameplural} currently allocated from <code>device</code> plus {objectcount} <strong class=\"purple\">must</strong> be less than or equal to the total number of {objectnameplural} requested via <code>VkDeviceObjectReservationCreateInfo</code>::pname:{objectnamecamelcase}RequestCount specified when <code>device</code> was created" + } ] }, "VkSamplerCreateInfo": { @@ -22691,14 +23603,6 @@ "text": " All submitted commands that refer to <code>sampler</code> <strong class=\"purple\">must</strong> have completed execution" }, { - "vuid": "VUID-vkDestroySampler-sampler-01083", - "text": " If <code>VkAllocationCallbacks</code> were provided when <code>sampler</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here" - }, - { - "vuid": "VUID-vkDestroySampler-sampler-01084", - "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>sampler</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" - }, - { "vuid": "VUID-vkDestroySampler-device-parameter", "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" }, @@ -22714,6 +23618,16 @@ "vuid": "VUID-vkDestroySampler-sampler-parent", "text": " If <code>sampler</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" } + ], + "!(VKSC_VERSION_1_0)": [ + { + "vuid": "VUID-vkDestroySampler-sampler-01083", + "text": " If <code>VkAllocationCallbacks</code> were provided when <code>sampler</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here" + }, + { + "vuid": "VUID-vkDestroySampler-sampler-01084", + "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>sampler</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" + } ] }, "VkSamplerYcbcrConversionInfo": { @@ -22750,6 +23664,12 @@ "vuid": "VUID-vkCreateSamplerYcbcrConversion-pYcbcrConversion-parameter", "text": " <code>pYcbcrConversion</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkSamplerYcbcrConversion\">VkSamplerYcbcrConversion</a> handle" } + ], + "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)+(VKSC_VERSION_1_0)": [ + { + "vuid": "VUID-vkCreateSamplerYcbcrConversion-device-05068", + "text": " The number of {objectnameplural} currently allocated from <code>device</code> plus {objectcount} <strong class=\"purple\">must</strong> be less than or equal to the total number of {objectnameplural} requested via <code>VkDeviceObjectReservationCreateInfo</code>::pname:{objectnamecamelcase}RequestCount specified when <code>device</code> was created" + } ] }, "VkSamplerYcbcrConversionCreateInfo": { @@ -22921,6 +23841,16 @@ ] }, "vkCreateDescriptorSetLayout": { + "(VKSC_VERSION_1_0)+(VKSC_VERSION_1_0)": [ + { + "vuid": "VUID-vkCreateDescriptorSetLayout-device-05068", + "text": " The number of {objectnameplural} currently allocated from <code>device</code> plus {objectcount} <strong class=\"purple\">must</strong> be less than or equal to the total number of {objectnameplural} requested via <code>VkDeviceObjectReservationCreateInfo</code>::pname:{objectnamecamelcase}RequestCount specified when <code>device</code> was created" + }, + { + "vuid": "VUID-vkCreateDescriptorSetLayout-layoutbindings-device-05089", + "text": " The number of descriptor set layout bindings currently allocated from <code>device</code> across all slink:VkDescriptorSetLayout objects plus pname:pCreateInfo->bindingCount <strong class=\"purple\">must</strong> be less than or equal to the total number of descriptor set layout bindings requested via <code>VkDeviceObjectReservationCreateInfo</code>::pname:descriptorSetLayoutBindingRequestCount specified when <code>device</code> was created" + } + ], "core": [ { "vuid": "VUID-vkCreateDescriptorSetLayout-device-parameter", @@ -23027,6 +23957,16 @@ "text": " If <code>flags</code> contains <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_EXT</code>, <a href=\"#VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT\">VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT</a>::<code>mutableDescriptorType</code> <strong class=\"purple\">must</strong> be enabled" } ], + "(VKSC_VERSION_1_0)": [ + { + "vuid": "VUID-VkDescriptorSetLayoutCreateInfo-bindingCount-05011", + "text": " <code>bindingCount</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#limits-maxDescriptorSetLayoutBindings\">maxDescriptorSetLayoutBindings</a>" + }, + { + "vuid": "VUID-VkDescriptorSetLayoutCreateInfo-descriptorCount-05071", + "text": " The sum of <code>descriptorCount</code> over all bindings in <code>pBindings</code> that have <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_SAMPLER</code> or <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code> and <code>pImmutableSamplers</code> not equal to <code>NULL</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkDeviceObjectReservationCreateInfo</code>::<code>maxImmutableSamplersPerDescriptorSetLayout</code>" + } + ], "(VK_EXT_descriptor_buffer)": [ { "vuid": "VUID-VkDescriptorSetLayoutCreateInfo-flags-08000", @@ -23164,6 +24104,12 @@ "vuid": "VUID-VkDescriptorSetLayoutBinding-descriptorType-04605", "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_MUTABLE_EXT</code>, then <code>pImmutableSamplers</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" } + ], + "(VKSC_VERSION_1_0)": [ + { + "vuid": "VUID-VkDescriptorSetLayoutBinding-binding-05012", + "text": " <code>binding</code> <strong class=\"purple\">must</strong> be less than the value of <code>VkDeviceObjectReservationCreateInfo</code>::<code>descriptorSetLayoutBindingLimit</code> provided when the device was created" + } ] }, "VkDescriptorSetLayoutBindingFlagsCreateInfo": { @@ -23289,7 +24235,7 @@ ] }, "vkDestroyDescriptorSetLayout": { - "core": [ + "!(VKSC_VERSION_1_0)": [ { "vuid": "VUID-vkDestroyDescriptorSetLayout-descriptorSetLayout-00284", "text": " If <code>VkAllocationCallbacks</code> were provided when <code>descriptorSetLayout</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here" @@ -23297,7 +24243,9 @@ { "vuid": "VUID-vkDestroyDescriptorSetLayout-descriptorSetLayout-00285", "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>descriptorSetLayout</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" - }, + } + ], + "core": [ { "vuid": "VUID-vkDestroyDescriptorSetLayout-device-parameter", "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" @@ -23317,6 +24265,12 @@ ] }, "vkCreatePipelineLayout": { + "(VKSC_VERSION_1_0)+(VKSC_VERSION_1_0)": [ + { + "vuid": "VUID-vkCreatePipelineLayout-device-05068", + "text": " The number of {objectnameplural} currently allocated from <code>device</code> plus {objectcount} <strong class=\"purple\">must</strong> be less than or equal to the total number of {objectnameplural} requested via <code>VkDeviceObjectReservationCreateInfo</code>::pname:{objectnamecamelcase}RequestCount specified when <code>device</code> was created" + } + ], "core": [ { "vuid": "VUID-vkCreatePipelineLayout-device-parameter", @@ -23683,7 +24637,7 @@ ] }, "vkDestroyPipelineLayout": { - "core": [ + "!(VKSC_VERSION_1_0)": [ { "vuid": "VUID-vkDestroyPipelineLayout-pipelineLayout-00299", "text": " If <code>VkAllocationCallbacks</code> were provided when <code>pipelineLayout</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here" @@ -23691,7 +24645,9 @@ { "vuid": "VUID-vkDestroyPipelineLayout-pipelineLayout-00300", "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>pipelineLayout</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" - }, + } + ], + "core": [ { "vuid": "VUID-vkDestroyPipelineLayout-pipelineLayout-02004", "text": " <code>pipelineLayout</code> <strong class=\"purple\">must</strong> not have been passed to any <code>vkCmd*</code> command for any command buffers that are still in the <a href=\"#commandbuffers-lifecycle\">recording state</a> when <code>vkDestroyPipelineLayout</code> is called" @@ -23715,6 +24671,12 @@ ] }, "vkCreateDescriptorPool": { + "(VKSC_VERSION_1_0)+(VKSC_VERSION_1_0)": [ + { + "vuid": "VUID-vkCreateDescriptorPool-device-05068", + "text": " The number of {objectnameplural} currently allocated from <code>device</code> plus {objectcount} <strong class=\"purple\">must</strong> be less than or equal to the total number of {objectnameplural} requested via <code>VkDeviceObjectReservationCreateInfo</code>::pname:{objectnamecamelcase}RequestCount specified when <code>device</code> was created" + } + ], "core": [ { "vuid": "VUID-vkCreateDescriptorPool-device-parameter", @@ -23809,7 +24771,7 @@ ] }, "vkDestroyDescriptorPool": { - "core": [ + "!(VKSC_VERSION_1_0)": [ { "vuid": "VUID-vkDestroyDescriptorPool-descriptorPool-00303", "text": " All submitted commands that refer to <code>descriptorPool</code> (via any allocated descriptor sets) <strong class=\"purple\">must</strong> have completed execution" @@ -23841,6 +24803,12 @@ ] }, "vkAllocateDescriptorSets": { + "(VKSC_VERSION_1_0)+(VKSC_VERSION_1_0)": [ + { + "vuid": "VUID-vkAllocateDescriptorSets-device-05068", + "text": " The number of {objectnameplural} currently allocated from <code>device</code> plus {objectcount} <strong class=\"purple\">must</strong> be less than or equal to the total number of {objectnameplural} requested via <code>VkDeviceObjectReservationCreateInfo</code>::pname:{objectnamecamelcase}RequestCount specified when <code>device</code> was created" + } + ], "core": [ { "vuid": "VUID-vkAllocateDescriptorSets-device-parameter", @@ -23861,7 +24829,7 @@ ] }, "VkDescriptorSetAllocateInfo": { - "(VK_VERSION_1_1,VK_KHR_maintenance1)": [ + "(VK_VERSION_1_1,VK_KHR_maintenance1)+!(VKSC_VERSION_1_0)": [ { "vuid": "VUID-VkDescriptorSetAllocateInfo-apiVersion-07895", "text": " If the <a href=\"#VK_KHR_maintenance1\">VK_KHR_maintenance1</a> extension is not enabled, <a href=\"#VkPhysicalDeviceProperties\">VkPhysicalDeviceProperties</a>::<code>apiVersion</code> is less than Vulkan 1.1, <code>descriptorSetCount</code> <strong class=\"purple\">must</strong> not be greater than the number of sets that are currently available for allocation in <code>descriptorPool</code>" @@ -24587,7 +25555,7 @@ ] }, "vkCreateDescriptorUpdateTemplate": { - "(VK_VERSION_1_1,VK_KHR_descriptor_update_template)": [ + "!(VKSC_VERSION_1_0)+(VK_VERSION_1_1,VK_KHR_descriptor_update_template)": [ { "vuid": "VUID-vkCreateDescriptorUpdateTemplate-device-parameter", "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" @@ -24607,7 +25575,7 @@ ] }, "VkDescriptorUpdateTemplateCreateInfo": { - "(VK_VERSION_1_1,VK_KHR_descriptor_update_template)": [ + "!(VKSC_VERSION_1_0)+(VK_VERSION_1_1,VK_KHR_descriptor_update_template)": [ { "vuid": "VUID-VkDescriptorUpdateTemplateCreateInfo-templateType-00350", "text": " If <code>templateType</code> is <code>VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET</code>, <code>descriptorSetLayout</code> <strong class=\"purple\">must</strong> be a valid <code>VkDescriptorSetLayout</code> handle" @@ -24641,7 +25609,7 @@ "text": " Both of <code>descriptorSetLayout</code>, and <code>pipelineLayout</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>" } ], - "(VK_VERSION_1_1,VK_KHR_descriptor_update_template)+(VK_KHR_push_descriptor)": [ + "!(VKSC_VERSION_1_0)+(VK_VERSION_1_1,VK_KHR_descriptor_update_template)+(VK_KHR_push_descriptor)": [ { "vuid": "VUID-VkDescriptorUpdateTemplateCreateInfo-templateType-00351", "text": " If <code>templateType</code> is <code>VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR</code>, <code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineBindPoint\">VkPipelineBindPoint</a> value" @@ -24655,7 +25623,7 @@ "text": " If <code>templateType</code> is <code>VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR</code>, <code>set</code> <strong class=\"purple\">must</strong> be the unique set number in the pipeline layout that uses a descriptor set layout that was created with <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR</code>" } ], - "(VK_VERSION_1_1,VK_KHR_descriptor_update_template)+(VK_EXT_mutable_descriptor_type,VK_VALVE_mutable_descriptor_type)": [ + "!(VKSC_VERSION_1_0)+(VK_VERSION_1_1,VK_KHR_descriptor_update_template)+(VK_EXT_mutable_descriptor_type,VK_VALVE_mutable_descriptor_type)": [ { "vuid": "VUID-VkDescriptorUpdateTemplateCreateInfo-templateType-04615", "text": " If <code>templateType</code> is <code>VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET</code>, <code>descriptorSetLayout</code> <strong class=\"purple\">must</strong> not contain a binding with type <code>VK_DESCRIPTOR_TYPE_MUTABLE_EXT</code>" @@ -24663,7 +25631,7 @@ ] }, "VkDescriptorUpdateTemplateEntry": { - "(VK_VERSION_1_1,VK_KHR_descriptor_update_template)": [ + "!(VKSC_VERSION_1_0)+(VK_VERSION_1_1,VK_KHR_descriptor_update_template)": [ { "vuid": "VUID-VkDescriptorUpdateTemplateEntry-dstBinding-00354", "text": " <code>dstBinding</code> <strong class=\"purple\">must</strong> be a valid binding in the descriptor set layout implicitly specified when using a descriptor update template to update descriptors" @@ -24677,7 +25645,7 @@ "text": " <code>descriptorType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDescriptorType\">VkDescriptorType</a> value" } ], - "(VK_VERSION_1_1,VK_KHR_descriptor_update_template)+(VK_VERSION_1_3,VK_EXT_inline_uniform_block)": [ + "!(VKSC_VERSION_1_0)+(VK_VERSION_1_1,VK_KHR_descriptor_update_template)+(VK_VERSION_1_3,VK_EXT_inline_uniform_block)": [ { "vuid": "VUID-VkDescriptorUpdateTemplateEntry-descriptor-02226", "text": " If <code>descriptor</code> type is <code>VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK</code>, <code>dstArrayElement</code> <strong class=\"purple\">must</strong> be an integer multiple of <code>4</code>" @@ -24689,7 +25657,7 @@ ] }, "vkDestroyDescriptorUpdateTemplate": { - "(VK_VERSION_1_1,VK_KHR_descriptor_update_template)": [ + "!(VKSC_VERSION_1_0)+(VK_VERSION_1_1,VK_KHR_descriptor_update_template)+!(VKSC_VERSION_1_0)": [ { "vuid": "VUID-vkDestroyDescriptorUpdateTemplate-descriptorSetLayout-00356", "text": " If <code>VkAllocationCallbacks</code> were provided when <code>descriptorUpdateTemplate</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here" @@ -24697,7 +25665,9 @@ { "vuid": "VUID-vkDestroyDescriptorUpdateTemplate-descriptorSetLayout-00357", "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>descriptorUpdateTemplate</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" - }, + } + ], + "!(VKSC_VERSION_1_0)+(VK_VERSION_1_1,VK_KHR_descriptor_update_template)": [ { "vuid": "VUID-vkDestroyDescriptorUpdateTemplate-device-parameter", "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" @@ -24717,7 +25687,7 @@ ] }, "vkUpdateDescriptorSetWithTemplate": { - "(VK_VERSION_1_1,VK_KHR_descriptor_update_template)": [ + "!(VKSC_VERSION_1_0)+(VK_VERSION_1_1,VK_KHR_descriptor_update_template)": [ { "vuid": "VUID-vkUpdateDescriptorSetWithTemplate-pData-01685", "text": " <code>pData</code> <strong class=\"purple\">must</strong> be a valid pointer to a memory containing one or more valid instances of <a href=\"#VkDescriptorImageInfo\">VkDescriptorImageInfo</a>, <a href=\"#VkDescriptorBufferInfo\">VkDescriptorBufferInfo</a>, or <a href=\"#VkBufferView\">VkBufferView</a> in a layout defined by <code>descriptorUpdateTemplate</code> when it was created with <a href=\"#vkCreateDescriptorUpdateTemplate\">vkCreateDescriptorUpdateTemplate</a>" @@ -24739,13 +25709,13 @@ "text": " <code>descriptorUpdateTemplate</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" } ], - "(VK_VERSION_1_1,VK_KHR_descriptor_update_template)+!(VK_VERSION_1_2,VK_EXT_descriptor_indexing)": [ + "!(VKSC_VERSION_1_0)+(VK_VERSION_1_1,VK_KHR_descriptor_update_template)+!(VK_VERSION_1_2,VK_EXT_descriptor_indexing)": [ { "vuid": "VUID-vkUpdateDescriptorSetWithTemplate-descriptorSet-06994", "text": " Host access to <code>descriptorSet</code> <strong class=\"purple\">must</strong> be <a href=\"#fundamentals-threadingbehavior\">externally synchronized</a>" } ], - "(VK_VERSION_1_1,VK_KHR_descriptor_update_template)+(VK_VERSION_1_2,VK_EXT_descriptor_indexing)": [ + "!(VKSC_VERSION_1_0)+(VK_VERSION_1_1,VK_KHR_descriptor_update_template)+(VK_VERSION_1_2,VK_EXT_descriptor_indexing)": [ { "vuid": "VUID-vkUpdateDescriptorSetWithTemplate-descriptorSet-06995", "text": " Host access to <code>descriptorSet</code> <strong class=\"purple\">must</strong> be <a href=\"#fundamentals-threadingbehavior\">externally synchronized</a> unless explicitly denoted otherwise for specific flags" @@ -27813,6 +28783,12 @@ ] }, "vkCreateQueryPool": { + "(VKSC_VERSION_1_0)+(VKSC_VERSION_1_0)": [ + { + "vuid": "VUID-vkCreateQueryPool-device-05068", + "text": " The number of {objectnameplural} currently allocated from <code>device</code> plus {objectcount} <strong class=\"purple\">must</strong> be less than or equal to the total number of {objectnameplural} requested via <code>VkDeviceObjectReservationCreateInfo</code>::pname:{objectnamecamelcase}RequestCount specified when <code>device</code> was created" + } + ], "core": [ { "vuid": "VUID-vkCreateQueryPool-device-parameter", @@ -27883,6 +28859,26 @@ "text": " If <code>queryType</code> is <code>VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR</code>, the <code>pNext</code> chain <strong class=\"purple\">must</strong> include a <a href=\"#VkQueryPoolPerformanceCreateInfoKHR\">VkQueryPoolPerformanceCreateInfoKHR</a> structure" } ], + "(VKSC_VERSION_1_0)": [ + { + "vuid": "VUID-VkQueryPoolCreateInfo-queryType-05046", + "text": " If <code>queryType</code> is <code>VK_QUERY_TYPE_OCCLUSION</code> then <code>queryCount</code> <strong class=\"purple\">must</strong> be less than or equal to the maximum of all <code>VkDeviceObjectReservationCreateInfo</code>::<code>maxOcclusionQueriesPerPool</code> values specified when <code>device</code> was created" + }, + { + "vuid": "VUID-VkQueryPoolCreateInfo-queryType-05047", + "text": " If <code>queryType</code> is <code>VK_QUERY_TYPE_PIPELINE_STATISTICS</code> then <code>queryCount</code> <strong class=\"purple\">must</strong> be less than or equal to the maximum of all <code>VkDeviceObjectReservationCreateInfo</code>::<code>maxPipelineStatisticsQueriesPerPool</code> values specified when <code>device</code> was created" + }, + { + "vuid": "VUID-VkQueryPoolCreateInfo-queryType-05048", + "text": " If <code>queryType</code> is <code>VK_QUERY_TYPE_TIMESTAMP</code> then <code>queryCount</code> <strong class=\"purple\">must</strong> be less than or equal to the maximum of all <code>VkDeviceObjectReservationCreateInfo</code>::<code>maxTimestampQueriesPerPool</code> values specified when <code>device</code> was created" + } + ], + "(VKSC_VERSION_1_0)+(VK_KHR_performance_query)": [ + { + "vuid": "VUID-VkQueryPoolCreateInfo-queryType-05049", + "text": " If <code>queryType</code> is <code>VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR</code> then <code>queryCount</code> <strong class=\"purple\">must</strong> be less than or equal to the maximum of all <code>VkPerformanceQueryReservationInfoKHR</code>::<code>maxPerformanceQueriesPerPool</code> values specified when <code>device</code> was created" + } + ], "(VK_KHR_video_encode_queue)": [ { "vuid": "VUID-VkQueryPoolCreateInfo-queryType-07133", @@ -27943,7 +28939,7 @@ ] }, "vkDestroyQueryPool": { - "core": [ + "!(VKSC_VERSION_1_0)": [ { "vuid": "VUID-vkDestroyQueryPool-queryPool-00793", "text": " All submitted commands that refer to <code>queryPool</code> <strong class=\"purple\">must</strong> have completed execution" @@ -29851,7 +30847,7 @@ "text": " Both of <code>commandBuffer</code>, and <code>dstBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>" } ], - "(VK_VERSION_1_1,VK_KHR_maintenance1)": [ + "(VK_VERSION_1_1,VK_KHR_maintenance1)+!(VKSC_VERSION_1_0)": [ { "vuid": "VUID-vkCmdFillBuffer-apiVersion-07894", "text": " If the <a href=\"#VK_KHR_maintenance1\">VK_KHR_maintenance1</a> extension is not enabled and <a href=\"#VkPhysicalDeviceProperties\">VkPhysicalDeviceProperties</a>::<code>apiVersion</code> is less than Vulkan 1.1, the <a href=\"#VkCommandPool\">VkCommandPool</a> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics or compute operations" @@ -30399,10 +31395,6 @@ "text": " The <a href=\"#resources-image-format-features\">format features</a> of <code>dstImage</code> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_TRANSFER_DST_BIT</code>" }, { - "vuid": "VUID-vkCmdCopyImage-apiVersion-07932", - "text": " If the <a href=\"#VK_KHR_maintenance1\">VK_KHR_maintenance1</a> extension is not enabled, <a href=\"#VkPhysicalDeviceProperties\">VkPhysicalDeviceProperties</a>::<code>apiVersion</code> is less than Vulkan 1.1, and either <code>srcImage</code> or <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_3D</code>, then for each element of <code>pRegions</code>, <code>srcSubresource.baseArrayLayer</code> and <code>dstSubresource.baseArrayLayer</code> <strong class=\"purple\">must</strong> each be <code>0</code>, and <code>srcSubresource.layerCount</code> and <code>dstSubresource.layerCount</code> <strong class=\"purple\">must</strong> each be <code>1</code>" - }, - { "vuid": "VUID-vkCmdCopyImage-srcImage-04443", "text": " If <code>srcImage</code> is of type <code>VK_IMAGE_TYPE_3D</code>, then for each element of <code>pRegions</code>, <code>srcSubresource.baseArrayLayer</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>srcSubresource.layerCount</code> <strong class=\"purple\">must</strong> be <code>1</code>" }, @@ -30411,10 +31403,6 @@ "text": " If <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_3D</code>, then for each element of <code>pRegions</code>, <code>dstSubresource.baseArrayLayer</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>dstSubresource.layerCount</code> <strong class=\"purple\">must</strong> be <code>1</code>" }, { - "vuid": "VUID-vkCmdCopyImage-apiVersion-07933", - "text": " If the <a href=\"#VK_KHR_maintenance1\">VK_KHR_maintenance1</a> extension is not enabled, <a href=\"#VkPhysicalDeviceProperties\">VkPhysicalDeviceProperties</a>::<code>apiVersion</code> is less than Vulkan 1.1, <code>srcImage</code> and <code>dstImage</code> <strong class=\"purple\">must</strong> have the same <a href=\"#VkImageType\">VkImageType</a>" - }, - { "vuid": "VUID-vkCmdCopyImage-srcImage-07743", "text": " If <code>srcImage</code> and <code>dstImage</code> have a different <a href=\"#VkImageType\">VkImageType</a>, one <strong class=\"purple\">must</strong> be <code>VK_IMAGE_TYPE_3D</code> and the other <strong class=\"purple\">must</strong> be <code>VK_IMAGE_TYPE_2D</code>" }, @@ -30521,6 +31509,16 @@ "text": " If <code>srcImage</code> or <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_2D</code>, then for each element of <code>pRegions</code>, <code>extent.depth</code> <strong class=\"purple\">must</strong> be <code>1</code>" } ], + "(VK_VERSION_1_1,VK_KHR_maintenance1)+!(VKSC_VERSION_1_0)": [ + { + "vuid": "VUID-vkCmdCopyImage-apiVersion-07932", + "text": " If the <a href=\"#VK_KHR_maintenance1\">VK_KHR_maintenance1</a> extension is not enabled, <a href=\"#VkPhysicalDeviceProperties\">VkPhysicalDeviceProperties</a>::<code>apiVersion</code> is less than Vulkan 1.1, and either <code>srcImage</code> or <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_3D</code>, then for each element of <code>pRegions</code>, <code>srcSubresource.baseArrayLayer</code> and <code>dstSubresource.baseArrayLayer</code> <strong class=\"purple\">must</strong> each be <code>0</code>, and <code>srcSubresource.layerCount</code> and <code>dstSubresource.layerCount</code> <strong class=\"purple\">must</strong> each be <code>1</code>" + }, + { + "vuid": "VUID-vkCmdCopyImage-apiVersion-07933", + "text": " If the <a href=\"#VK_KHR_maintenance1\">VK_KHR_maintenance1</a> extension is not enabled, <a href=\"#VkPhysicalDeviceProperties\">VkPhysicalDeviceProperties</a>::<code>apiVersion</code> is less than Vulkan 1.1, <code>srcImage</code> and <code>dstImage</code> <strong class=\"purple\">must</strong> have the same <a href=\"#VkImageType\">VkImageType</a>" + } + ], "!(VK_VERSION_1_2,VK_EXT_separate_stencil_usage)": [ { "vuid": "VUID-vkCmdCopyImage-srcImage-00126", @@ -30567,13 +31565,13 @@ "text": " The <code>aspectMask</code> member of <code>srcSubresource</code> and <code>dstSubresource</code> <strong class=\"purple\">must</strong> match" } ], - "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [ + "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)+!(VKSC_VERSION_1_0)": [ { "vuid": "VUID-VkImageCopy-apiVersion-07940", "text": " If the <a href=\"#VK_KHR_sampler_ycbcr_conversion\">VK_KHR_sampler_ycbcr_conversion</a> extension is not enabled and <a href=\"#VkPhysicalDeviceProperties\">VkPhysicalDeviceProperties</a>::<code>apiVersion</code> is less than Vulkan 1.1, the <code>aspectMask</code> member of <code>srcSubresource</code> and <code>dstSubresource</code> <strong class=\"purple\">must</strong> match" } ], - "(VK_VERSION_1_1,VK_KHR_maintenance1)": [ + "(VK_VERSION_1_1,VK_KHR_maintenance1)+!(VKSC_VERSION_1_0)": [ { "vuid": "VUID-VkImageCopy-apiVersion-07941", "text": " If the <a href=\"#VK_KHR_maintenance1\">VK_KHR_maintenance1</a> extension is not enabled and <a href=\"#VkPhysicalDeviceProperties\">VkPhysicalDeviceProperties</a>::<code>apiVersion</code> is less than Vulkan 1.1, the <code>layerCount</code> member of <code>srcSubresource</code> and <code>dstSubresource</code> <strong class=\"purple\">must</strong> match" @@ -30873,10 +31871,6 @@ "text": " The <a href=\"#resources-image-format-features\">format features</a> of <code>dstImage</code> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_TRANSFER_DST_BIT</code>" }, { - "vuid": "VUID-VkCopyImageInfo2-apiVersion-07932", - "text": " If the <a href=\"#VK_KHR_maintenance1\">VK_KHR_maintenance1</a> extension is not enabled, <a href=\"#VkPhysicalDeviceProperties\">VkPhysicalDeviceProperties</a>::<code>apiVersion</code> is less than Vulkan 1.1, and either <code>srcImage</code> or <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_3D</code>, then for each element of <code>pRegions</code>, <code>srcSubresource.baseArrayLayer</code> and <code>dstSubresource.baseArrayLayer</code> <strong class=\"purple\">must</strong> each be <code>0</code>, and <code>srcSubresource.layerCount</code> and <code>dstSubresource.layerCount</code> <strong class=\"purple\">must</strong> each be <code>1</code>" - }, - { "vuid": "VUID-VkCopyImageInfo2-srcImage-04443", "text": " If <code>srcImage</code> is of type <code>VK_IMAGE_TYPE_3D</code>, then for each element of <code>pRegions</code>, <code>srcSubresource.baseArrayLayer</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>srcSubresource.layerCount</code> <strong class=\"purple\">must</strong> be <code>1</code>" }, @@ -30885,10 +31879,6 @@ "text": " If <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_3D</code>, then for each element of <code>pRegions</code>, <code>dstSubresource.baseArrayLayer</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>dstSubresource.layerCount</code> <strong class=\"purple\">must</strong> be <code>1</code>" }, { - "vuid": "VUID-VkCopyImageInfo2-apiVersion-07933", - "text": " If the <a href=\"#VK_KHR_maintenance1\">VK_KHR_maintenance1</a> extension is not enabled, <a href=\"#VkPhysicalDeviceProperties\">VkPhysicalDeviceProperties</a>::<code>apiVersion</code> is less than Vulkan 1.1, <code>srcImage</code> and <code>dstImage</code> <strong class=\"purple\">must</strong> have the same <a href=\"#VkImageType\">VkImageType</a>" - }, - { "vuid": "VUID-VkCopyImageInfo2-srcImage-07743", "text": " If <code>srcImage</code> and <code>dstImage</code> have a different <a href=\"#VkImageType\">VkImageType</a>, one <strong class=\"purple\">must</strong> be <code>VK_IMAGE_TYPE_3D</code> and the other <strong class=\"purple\">must</strong> be <code>VK_IMAGE_TYPE_2D</code>" }, @@ -30995,6 +31985,16 @@ "text": " If <code>srcImage</code> or <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_2D</code>, then for each element of <code>pRegions</code>, <code>extent.depth</code> <strong class=\"purple\">must</strong> be <code>1</code>" } ], + "(VK_VERSION_1_3,VK_KHR_copy_commands2)+(VK_VERSION_1_1,VK_KHR_maintenance1)+!(VKSC_VERSION_1_0)": [ + { + "vuid": "VUID-VkCopyImageInfo2-apiVersion-07932", + "text": " If the <a href=\"#VK_KHR_maintenance1\">VK_KHR_maintenance1</a> extension is not enabled, <a href=\"#VkPhysicalDeviceProperties\">VkPhysicalDeviceProperties</a>::<code>apiVersion</code> is less than Vulkan 1.1, and either <code>srcImage</code> or <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_3D</code>, then for each element of <code>pRegions</code>, <code>srcSubresource.baseArrayLayer</code> and <code>dstSubresource.baseArrayLayer</code> <strong class=\"purple\">must</strong> each be <code>0</code>, and <code>srcSubresource.layerCount</code> and <code>dstSubresource.layerCount</code> <strong class=\"purple\">must</strong> each be <code>1</code>" + }, + { + "vuid": "VUID-VkCopyImageInfo2-apiVersion-07933", + "text": " If the <a href=\"#VK_KHR_maintenance1\">VK_KHR_maintenance1</a> extension is not enabled, <a href=\"#VkPhysicalDeviceProperties\">VkPhysicalDeviceProperties</a>::<code>apiVersion</code> is less than Vulkan 1.1, <code>srcImage</code> and <code>dstImage</code> <strong class=\"purple\">must</strong> have the same <a href=\"#VkImageType\">VkImageType</a>" + } + ], "(VK_VERSION_1_3,VK_KHR_copy_commands2)+!(VK_VERSION_1_2,VK_EXT_separate_stencil_usage)": [ { "vuid": "VUID-VkCopyImageInfo2-srcImage-00126", @@ -31041,13 +32041,13 @@ "text": " The <code>aspectMask</code> member of <code>srcSubresource</code> and <code>dstSubresource</code> <strong class=\"purple\">must</strong> match" } ], - "(VK_VERSION_1_3,VK_KHR_copy_commands2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [ + "(VK_VERSION_1_3,VK_KHR_copy_commands2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)+!(VKSC_VERSION_1_0)": [ { "vuid": "VUID-VkImageCopy2-apiVersion-07940", "text": " If the <a href=\"#VK_KHR_sampler_ycbcr_conversion\">VK_KHR_sampler_ycbcr_conversion</a> extension is not enabled and <a href=\"#VkPhysicalDeviceProperties\">VkPhysicalDeviceProperties</a>::<code>apiVersion</code> is less than Vulkan 1.1, the <code>aspectMask</code> member of <code>srcSubresource</code> and <code>dstSubresource</code> <strong class=\"purple\">must</strong> match" } ], - "(VK_VERSION_1_3,VK_KHR_copy_commands2)+(VK_VERSION_1_1,VK_KHR_maintenance1)": [ + "(VK_VERSION_1_3,VK_KHR_copy_commands2)+(VK_VERSION_1_1,VK_KHR_maintenance1)+!(VKSC_VERSION_1_0)": [ { "vuid": "VUID-VkImageCopy2-apiVersion-07941", "text": " If the <a href=\"#VK_KHR_maintenance1\">VK_KHR_maintenance1</a> extension is not enabled and <a href=\"#VkPhysicalDeviceProperties\">VkPhysicalDeviceProperties</a>::<code>apiVersion</code> is less than Vulkan 1.1, the <code>layerCount</code> member of <code>srcSubresource</code> and <code>dstSubresource</code> <strong class=\"purple\">must</strong> match" @@ -33522,6 +34522,18 @@ } ] }, + "VkRefreshObjectKHR": { + "(VK_KHR_object_refresh)": [ + { + "vuid": "VUID-VkRefreshObjectKHR-objectHandle-05069", + "text": " <code>objectHandle</code> <strong class=\"purple\">must</strong> be a valid Vulkan handle of the type associated with <code>objectType</code> as defined in the <a href=\"#debugging-object-types\">VkObjectType and Vulkan Handle Relationship</a> table" + }, + { + "vuid": "VUID-VkRefreshObjectKHR-objectType-05070", + "text": " <code>objectType</code> <strong class=\"purple\">must</strong> not be <code>VK_OBJECT_TYPE_UNKNOWN</code>" + } + ] + }, "vkCmdWriteBufferMarker2AMD": { "(VK_AMD_buffer_marker)+(VK_VERSION_1_3,VK_KHR_synchronization2)": [ { @@ -63157,10 +64169,6 @@ "text": " <code>width</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxViewportDimensions</code>[0]" }, { - "vuid": "VUID-VkViewport-apiVersion-07917", - "text": " If the <a href=\"#VK_KHR_maintenance1\">VK_KHR_maintenance1</a> extension is not enabled, the <a href=\"#VK_AMD_negative_viewport_height\">VK_AMD_negative_viewport_height</a> extension is not enabled, and <a href=\"#VkPhysicalDeviceProperties\">VkPhysicalDeviceProperties</a>::<code>apiVersion</code> is less than Vulkan 1.1, <code>height</code> <strong class=\"purple\">must</strong> be greater than <code>0.0</code>" - }, - { "vuid": "VUID-VkViewport-height-01773", "text": " The absolute value of <code>height</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxViewportDimensions</code>[1]" }, @@ -63181,6 +64189,12 @@ "text": " <span class=\"eq\">(<code>y</code> + <code>height</code>)</span> <strong class=\"purple\">must</strong> be less than or equal to <code>viewportBoundsRange</code>[1]" } ], + "!(VKSC_VERSION_1_0)": [ + { + "vuid": "VUID-VkViewport-apiVersion-07917", + "text": " If the <a href=\"#VK_KHR_maintenance1\">VK_KHR_maintenance1</a> extension is not enabled, the <a href=\"#VK_AMD_negative_viewport_height\">VK_AMD_negative_viewport_height</a> extension is not enabled, and <a href=\"#VkPhysicalDeviceProperties\">VkPhysicalDeviceProperties</a>::<code>apiVersion</code> is less than Vulkan 1.1, <code>height</code> <strong class=\"purple\">must</strong> be greater than <code>0.0</code>" + } + ], "(VK_VERSION_1_1,VK_KHR_maintenance1,VK_AMD_negative_viewport_height)": [ { "vuid": "VUID-VkViewport-y-01776", @@ -67951,14 +68965,6 @@ "text": " All submitted commands that refer to <code>indirectCommandsLayout</code> <strong class=\"purple\">must</strong> have completed execution" }, { - "vuid": "VUID-vkDestroyIndirectCommandsLayoutNV-indirectCommandsLayout-02939", - "text": " If <code>VkAllocationCallbacks</code> were provided when <code>indirectCommandsLayout</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here" - }, - { - "vuid": "VUID-vkDestroyIndirectCommandsLayoutNV-indirectCommandsLayout-02940", - "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>indirectCommandsLayout</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" - }, - { "vuid": "VUID-vkDestroyIndirectCommandsLayoutNV-deviceGeneratedCommands-02941", "text": " The <a href=\"#features-deviceGeneratedCommands\"><code>VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV</code>::<code>deviceGeneratedCommands</code></a> feature <strong class=\"purple\">must</strong> be enabled" }, @@ -67978,6 +68984,16 @@ "vuid": "VUID-vkDestroyIndirectCommandsLayoutNV-indirectCommandsLayout-parent", "text": " If <code>indirectCommandsLayout</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" } + ], + "(VK_NV_device_generated_commands)+!(VKSC_VERSION_1_0)": [ + { + "vuid": "VUID-vkDestroyIndirectCommandsLayoutNV-indirectCommandsLayout-02939", + "text": " If <code>VkAllocationCallbacks</code> were provided when <code>indirectCommandsLayout</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here" + }, + { + "vuid": "VUID-vkDestroyIndirectCommandsLayoutNV-indirectCommandsLayout-02940", + "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>indirectCommandsLayout</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" + } ] }, "VkIndirectCommandsStreamNV": { @@ -69999,7 +71015,7 @@ ] }, "vkGetPhysicalDeviceSparseImageFormatProperties": { - "core": [ + "!(VKSC_VERSION_1_0)": [ { "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties-samples-01094", "text": " <code>samples</code> <strong class=\"purple\">must</strong> be a bit value that is set in <code>VkImageFormatProperties</code>::<code>sampleCounts</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties</code> with <code>format</code>, <code>type</code>, <code>tiling</code>, and <code>usage</code> equal to those in this command and <code>flags</code> equal to the value that is set in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>flags</code> when the image is created" @@ -70043,7 +71059,7 @@ ] }, "vkGetPhysicalDeviceSparseImageFormatProperties2": { - "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [ + "!(VKSC_VERSION_1_0)+(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [ { "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties2-physicalDevice-parameter", "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle" @@ -70063,7 +71079,7 @@ ] }, "VkPhysicalDeviceSparseImageFormatInfo2": { - "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [ + "!(VKSC_VERSION_1_0)+(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [ { "vuid": "VUID-VkPhysicalDeviceSparseImageFormatInfo2-samples-01095", "text": " <code>samples</code> <strong class=\"purple\">must</strong> be a bit value that is set in <code>VkImageFormatProperties</code>::<code>sampleCounts</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties</code> with <code>format</code>, <code>type</code>, <code>tiling</code>, and <code>usage</code> equal to those in this command and <code>flags</code> equal to the value that is set in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>flags</code> when the image is created" @@ -70103,7 +71119,7 @@ ] }, "VkSparseImageFormatProperties2": { - "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [ + "!(VKSC_VERSION_1_0)+(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [ { "vuid": "VUID-VkSparseImageFormatProperties2-sType-sType", "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2</code>" @@ -70115,7 +71131,7 @@ ] }, "vkGetImageSparseMemoryRequirements": { - "core": [ + "!(VKSC_VERSION_1_0)": [ { "vuid": "VUID-vkGetImageSparseMemoryRequirements-device-parameter", "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" @@ -70139,7 +71155,7 @@ ] }, "vkGetImageSparseMemoryRequirements2": { - "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)": [ + "!(VKSC_VERSION_1_0)+(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)": [ { "vuid": "VUID-vkGetImageSparseMemoryRequirements2-device-parameter", "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" @@ -70159,7 +71175,7 @@ ] }, "vkGetDeviceImageSparseMemoryRequirements": { - "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)+(VK_VERSION_1_3,VK_KHR_maintenance4)": [ + "!(VKSC_VERSION_1_0)+(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)+(VK_VERSION_1_3,VK_KHR_maintenance4)": [ { "vuid": "VUID-vkGetDeviceImageSparseMemoryRequirements-device-parameter", "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" @@ -70179,7 +71195,7 @@ ] }, "VkImageSparseMemoryRequirementsInfo2": { - "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)": [ + "!(VKSC_VERSION_1_0)+(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)": [ { "vuid": "VUID-VkImageSparseMemoryRequirementsInfo2-sType-sType", "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2</code>" @@ -70195,7 +71211,7 @@ ] }, "VkSparseImageMemoryRequirements2": { - "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)": [ + "!(VKSC_VERSION_1_0)+(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)": [ { "vuid": "VUID-VkSparseImageMemoryRequirements2-sType-sType", "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2</code>" @@ -70207,7 +71223,7 @@ ] }, "VkSparseMemoryBind": { - "core": [ + "!(VKSC_VERSION_1_0)": [ { "vuid": "VUID-VkSparseMemoryBind-memory-01096", "text": " If <code>memory</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>memory</code> and <code>memoryOffset</code> <strong class=\"purple\">must</strong> match the memory requirements of the resource, as described in section <a href=\"#resources-association\">Resource Memory Association</a>" @@ -70245,7 +71261,7 @@ "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkSparseMemoryBindFlagBits\">VkSparseMemoryBindFlagBits</a> values" } ], - "(VK_VERSION_1_1,VK_KHR_external_memory)": [ + "!(VKSC_VERSION_1_0)+(VK_VERSION_1_1,VK_KHR_external_memory)": [ { "vuid": "VUID-VkSparseMemoryBind-memory-02730", "text": " If <code>memory</code> was created with <a href=\"#VkExportMemoryAllocateInfo\">VkExportMemoryAllocateInfo</a>::<code>handleTypes</code> not equal to <code>0</code>, at least one handle type it contained <strong class=\"purple\">must</strong> also have been set in <a href=\"#VkExternalMemoryBufferCreateInfo\">VkExternalMemoryBufferCreateInfo</a>::<code>handleTypes</code> or <a href=\"#VkExternalMemoryImageCreateInfo\">VkExternalMemoryImageCreateInfo</a>::<code>handleTypes</code> when the resource was created" @@ -70257,7 +71273,7 @@ ] }, "VkSparseBufferMemoryBindInfo": { - "core": [ + "!(VKSC_VERSION_1_0)": [ { "vuid": "VUID-VkSparseBufferMemoryBindInfo-buffer-parameter", "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle" @@ -70273,7 +71289,7 @@ ] }, "VkSparseImageOpaqueMemoryBindInfo": { - "core": [ + "!(VKSC_VERSION_1_0)": [ { "vuid": "VUID-VkSparseImageOpaqueMemoryBindInfo-pBinds-01103", "text": " If the <code>flags</code> member of any element of <code>pBinds</code> contains <code>VK_SPARSE_MEMORY_BIND_METADATA_BIT</code>, the binding range defined <strong class=\"purple\">must</strong> be within the mip tail region of the metadata aspect of <code>image</code>" @@ -70293,7 +71309,7 @@ ] }, "VkSparseImageMemoryBindInfo": { - "core": [ + "!(VKSC_VERSION_1_0)": [ { "vuid": "VUID-VkSparseImageMemoryBindInfo-subresource-01722", "text": " The <code>subresource.mipLevel</code> member of each element of <code>pBinds</code> <strong class=\"purple\">must</strong> be less than the <code>mipLevels</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created" @@ -70321,7 +71337,7 @@ ] }, "VkSparseImageMemoryBind": { - "core": [ + "!(VKSC_VERSION_1_0)": [ { "vuid": "VUID-VkSparseImageMemoryBind-memory-01104", "text": " If the <a href=\"#features-sparseResidencyAliased\"><code>sparseResidencyAliased</code></a> feature is not enabled, and if any other resources are bound to ranges of <code>memory</code>, the range of <code>memory</code> being bound <strong class=\"purple\">must</strong> not overlap with those bound ranges" @@ -70371,7 +71387,7 @@ "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkSparseMemoryBindFlagBits\">VkSparseMemoryBindFlagBits</a> values" } ], - "(VK_VERSION_1_1,VK_KHR_external_memory)": [ + "!(VKSC_VERSION_1_0)+(VK_VERSION_1_1,VK_KHR_external_memory)": [ { "vuid": "VUID-VkSparseImageMemoryBind-memory-02732", "text": " If <code>memory</code> was created with <a href=\"#VkExportMemoryAllocateInfo\">VkExportMemoryAllocateInfo</a>::<code>handleTypes</code> not equal to <code>0</code>, at least one handle type it contained <strong class=\"purple\">must</strong> also have been set in <a href=\"#VkExternalMemoryImageCreateInfo\">VkExternalMemoryImageCreateInfo</a>::<code>handleTypes</code> when the image was created" @@ -70383,7 +71399,7 @@ ] }, "vkQueueBindSparse": { - "core": [ + "!(VKSC_VERSION_1_0)": [ { "vuid": "VUID-vkQueueBindSparse-fence-01113", "text": " If <code>fence</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>fence</code> <strong class=\"purple\">must</strong> be unsignaled" @@ -70425,7 +71441,7 @@ "text": " Both of <code>fence</code>, and <code>queue</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>" } ], - "(VK_VERSION_1_2,VK_KHR_timeline_semaphore)": [ + "!(VKSC_VERSION_1_0)+(VK_VERSION_1_2,VK_KHR_timeline_semaphore)": [ { "vuid": "VUID-vkQueueBindSparse-pWaitSemaphores-03245", "text": " All elements of the <code>pWaitSemaphores</code> member of all elements of <code>pBindInfo</code> created with a <a href=\"#VkSemaphoreType\">VkSemaphoreType</a> of <code>VK_SEMAPHORE_TYPE_BINARY</code> <strong class=\"purple\">must</strong> reference a semaphore signal operation that has been submitted for execution and any semaphore signal operations on which it depends (if any) <strong class=\"purple\">must</strong> have also been submitted for execution" @@ -70433,7 +71449,7 @@ ] }, "VkBindSparseInfo": { - "(VK_VERSION_1_2,VK_KHR_timeline_semaphore)": [ + "!(VKSC_VERSION_1_0)+(VK_VERSION_1_2,VK_KHR_timeline_semaphore)": [ { "vuid": "VUID-VkBindSparseInfo-pWaitSemaphores-03246", "text": " If any element of <code>pWaitSemaphores</code> or <code>pSignalSemaphores</code> was created with a <a href=\"#VkSemaphoreType\">VkSemaphoreType</a> of <code>VK_SEMAPHORE_TYPE_TIMELINE</code> then the <code>pNext</code> chain <strong class=\"purple\">must</strong> include a <a href=\"#VkTimelineSemaphoreSubmitInfo\">VkTimelineSemaphoreSubmitInfo</a> structure" @@ -70459,7 +71475,7 @@ "text": " For each element of <code>pSignalSemaphores</code> created with a <a href=\"#VkSemaphoreType\">VkSemaphoreType</a> of <code>VK_SEMAPHORE_TYPE_TIMELINE</code> the corresponding element of <a href=\"#VkTimelineSemaphoreSubmitInfo\">VkTimelineSemaphoreSubmitInfo</a>::<code>pSignalSemaphoreValues</code> <strong class=\"purple\">must</strong> have a value which does not differ from the current value of the semaphore or from the value of any outstanding semaphore wait or signal operation on that semaphore by more than <a href=\"#limits-maxTimelineSemaphoreValueDifference\"><code>maxTimelineSemaphoreValueDifference</code></a>" } ], - "core": [ + "!(VKSC_VERSION_1_0)": [ { "vuid": "VUID-VkBindSparseInfo-sType-sType", "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BIND_SPARSE_INFO</code>" @@ -70499,7 +71515,7 @@ ] }, "VkDeviceGroupBindSparseInfo": { - "(VK_VERSION_1_1,VK_KHR_device_group)": [ + "!(VKSC_VERSION_1_0)+(VK_VERSION_1_1,VK_KHR_device_group)": [ { "vuid": "VUID-VkDeviceGroupBindSparseInfo-resourceDeviceIndex-01118", "text": " <code>resourceDeviceIndex</code> and <code>memoryDeviceIndex</code> <strong class=\"purple\">must</strong> both be valid device indices" @@ -71069,14 +72085,6 @@ "text": " All <code>VkSwapchainKHR</code> objects created for <code>surface</code> <strong class=\"purple\">must</strong> have been destroyed prior to destroying <code>surface</code>" }, { - "vuid": "VUID-vkDestroySurfaceKHR-surface-01267", - "text": " If <code>VkAllocationCallbacks</code> were provided when <code>surface</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here" - }, - { - "vuid": "VUID-vkDestroySurfaceKHR-surface-01268", - "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>surface</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" - }, - { "vuid": "VUID-vkDestroySurfaceKHR-instance-parameter", "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkInstance\">VkInstance</a> handle" }, @@ -71092,6 +72100,16 @@ "vuid": "VUID-vkDestroySurfaceKHR-surface-parent", "text": " If <code>surface</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>instance</code>" } + ], + "(VK_KHR_surface)+!(VKSC_VERSION_1_0)": [ + { + "vuid": "VUID-vkDestroySurfaceKHR-surface-01267", + "text": " If <code>VkAllocationCallbacks</code> were provided when <code>surface</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here" + }, + { + "vuid": "VUID-vkDestroySurfaceKHR-surface-01268", + "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>surface</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" + } ] }, "vkGetPhysicalDeviceDisplayPropertiesKHR": { @@ -72451,6 +73469,12 @@ ] }, "vkCreateSwapchainKHR": { + "(VK_KHR_surface)+(VK_KHR_swapchain)+(VKSC_VERSION_1_0)+(VKSC_VERSION_1_0)": [ + { + "vuid": "VUID-vkCreateSwapchainKHR-device-05068", + "text": " The number of {objectnameplural} currently allocated from <code>device</code> plus {objectcount} <strong class=\"purple\">must</strong> be less than or equal to the total number of {objectnameplural} requested via <code>VkDeviceObjectReservationCreateInfo</code>::pname:{objectnamecamelcase}RequestCount specified when <code>device</code> was created" + } + ], "(VK_KHR_surface)+(VK_KHR_swapchain)": [ { "vuid": "VUID-vkCreateSwapchainKHR-device-parameter", @@ -72517,10 +73541,6 @@ "text": " <code>presentMode</code> <strong class=\"purple\">must</strong> be one of the <a href=\"#VkPresentModeKHR\">VkPresentModeKHR</a> values returned by <code>vkGetPhysicalDeviceSurfacePresentModesKHR</code> for the surface" }, { - "vuid": "VUID-VkSwapchainCreateInfoKHR-oldSwapchain-01933", - "text": " If <code>oldSwapchain</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>oldSwapchain</code> <strong class=\"purple\">must</strong> be a non-retired swapchain associated with native window referred to by <code>surface</code>" - }, - { "vuid": "VUID-VkSwapchainCreateInfoKHR-imageFormat-01778", "text": " The <a href=\"#swapchain-wsi-image-create-info\">implied image creation parameters</a> of the swapchain <strong class=\"purple\">must</strong> be supported as reported by <a href=\"#vkGetPhysicalDeviceImageFormatProperties\">vkGetPhysicalDeviceImageFormatProperties</a>" }, @@ -72633,12 +73653,30 @@ "text": " If <code>imageSharingMode</code> is <code>VK_SHARING_MODE_CONCURRENT</code>, each element of <code>pQueueFamilyIndices</code> <strong class=\"purple\">must</strong> be unique and <strong class=\"purple\">must</strong> be less than <code>pQueueFamilyPropertyCount</code> returned by either <a href=\"#vkGetPhysicalDeviceQueueFamilyProperties\">vkGetPhysicalDeviceQueueFamilyProperties</a> or <a href=\"#vkGetPhysicalDeviceQueueFamilyProperties2\">vkGetPhysicalDeviceQueueFamilyProperties2</a> for the <code>physicalDevice</code> that was used to create <code>device</code>" } ], - "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_VERSION_1_1,VK_KHR_device_group)": [ + "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_VERSION_1_1,VK_KHR_device_group)+!(VKSC_VERSION_1_0)": [ { "vuid": "VUID-VkSwapchainCreateInfoKHR-physicalDeviceCount-01429", "text": " If the logical device was created with <a href=\"#VkDeviceGroupDeviceCreateInfo\">VkDeviceGroupDeviceCreateInfo</a>::<code>physicalDeviceCount</code> equal to 1, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR</code>" } ], + "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_VERSION_1_1,VK_KHR_device_group)+(VKSC_VERSION_1_0)": [ + { + "vuid": "VUID-VkSwapchainCreateInfoKHR-flags-05072", + "text": " <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR</code>" + } + ], + "(VK_KHR_surface)+(VK_KHR_swapchain)+!(VKSC_VERSION_1_0)": [ + { + "vuid": "VUID-VkSwapchainCreateInfoKHR-oldSwapchain-01933", + "text": " If <code>oldSwapchain</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>oldSwapchain</code> <strong class=\"purple\">must</strong> be a non-retired swapchain associated with native window referred to by <code>surface</code>" + } + ], + "(VK_KHR_surface)+(VK_KHR_swapchain)+(VKSC_VERSION_1_0)": [ + { + "vuid": "VUID-VkSwapchainCreateInfoKHR-oldSwapchain-05073", + "text": " <code>oldSwapchain</code> <strong class=\"purple\">must</strong> be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>" + } + ], "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_KHR_swapchain_mutable_format)": [ { "vuid": "VUID-VkSwapchainCreateInfoKHR-flags-03168", @@ -72863,20 +73901,12 @@ ] }, "vkDestroySwapchainKHR": { - "(VK_KHR_surface)+(VK_KHR_swapchain)": [ + "(VK_KHR_surface)+(VK_KHR_swapchain)+!(VKSC_VERSION_1_0)": [ { "vuid": "VUID-vkDestroySwapchainKHR-swapchain-01282", "text": " All uses of presentable images acquired from <code>swapchain</code> <strong class=\"purple\">must</strong> have completed execution" }, { - "vuid": "VUID-vkDestroySwapchainKHR-swapchain-01283", - "text": " If <code>VkAllocationCallbacks</code> were provided when <code>swapchain</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here" - }, - { - "vuid": "VUID-vkDestroySwapchainKHR-swapchain-01284", - "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>swapchain</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" - }, - { "vuid": "VUID-vkDestroySwapchainKHR-device-parameter", "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" }, @@ -72892,9 +73922,25 @@ "vuid": "VUID-vkDestroySwapchainKHR-swapchain-parent", "text": " If <code>swapchain</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" } + ], + "(VK_KHR_surface)+(VK_KHR_swapchain)+!(VKSC_VERSION_1_0)+!(VKSC_VERSION_1_0)": [ + { + "vuid": "VUID-vkDestroySwapchainKHR-swapchain-01283", + "text": " If <code>VkAllocationCallbacks</code> were provided when <code>swapchain</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here" + }, + { + "vuid": "VUID-vkDestroySwapchainKHR-swapchain-01284", + "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>swapchain</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" + } ] }, "vkCreateSharedSwapchainsKHR": { + "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_KHR_display_swapchain)+(VKSC_VERSION_1_0)+(VKSC_VERSION_1_0)": [ + { + "vuid": "VUID-vkCreateSharedSwapchainsKHR-device-05068", + "text": " The number of {objectnameplural} currently allocated from <code>device</code> plus {objectcount} <strong class=\"purple\">must</strong> be less than or equal to the total number of {objectnameplural} requested via <code>VkDeviceObjectReservationCreateInfo</code>::pname:{objectnamecamelcase}RequestCount specified when <code>device</code> was created" + } + ], "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_KHR_display_swapchain)": [ { "vuid": "VUID-vkCreateSharedSwapchainsKHR-device-parameter", @@ -73545,7 +74591,7 @@ ] }, "vkDestroyDeferredOperationKHR": { - "(VK_KHR_deferred_host_operations)": [ + "(VK_KHR_deferred_host_operations)+!(VKSC_VERSION_1_0)": [ { "vuid": "VUID-vkDestroyDeferredOperationKHR-operation-03434", "text": " If <code>VkAllocationCallbacks</code> were provided when <code>operation</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here" @@ -73553,7 +74599,9 @@ { "vuid": "VUID-vkDestroyDeferredOperationKHR-operation-03435", "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>operation</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" - }, + } + ], + "(VK_KHR_deferred_host_operations)": [ { "vuid": "VUID-vkDestroyDeferredOperationKHR-operation-03436", "text": " <code>operation</code> <strong class=\"purple\">must</strong> be completed" @@ -73630,6 +74678,12 @@ "vuid": "VUID-vkCreatePrivateDataSlot-pPrivateDataSlot-parameter", "text": " <code>pPrivateDataSlot</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkPrivateDataSlot\">VkPrivateDataSlot</a> handle" } + ], + "(VK_VERSION_1_3,VK_EXT_private_data)+(VKSC_VERSION_1_0)": [ + { + "vuid": "VUID-vkCreatePrivateDataSlotEXT-device-05000", + "text": " The number of private data slots currently allocated from <code>device</code> plus 1 <strong class=\"purple\">must</strong> be less than or equal to the total number of private data slots requested via <a href=\"#VkDevicePrivateDataCreateInfoEXT\">VkDevicePrivateDataCreateInfoEXT</a>::<code>privateDataSlotRequestCount</code> when <code>device</code> was created" + } ] }, "VkPrivateDataSlotCreateInfo": { @@ -73649,7 +74703,7 @@ ] }, "vkDestroyPrivateDataSlot": { - "(VK_VERSION_1_3,VK_EXT_private_data)": [ + "(VK_VERSION_1_3,VK_EXT_private_data)+!(VKSC_VERSION_1_0)": [ { "vuid": "VUID-vkDestroyPrivateDataSlot-privateDataSlot-04062", "text": " If <code>VkAllocationCallbacks</code> were provided when <code>privateDataSlot</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here" @@ -73657,7 +74711,9 @@ { "vuid": "VUID-vkDestroyPrivateDataSlot-privateDataSlot-04063", "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>privateDataSlot</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" - }, + } + ], + "(VK_VERSION_1_3,VK_EXT_private_data)": [ { "vuid": "VUID-vkDestroyPrivateDataSlot-device-parameter", "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" @@ -83973,7 +85029,7 @@ ] }, "vkDestroyDebugUtilsMessengerEXT": { - "(VK_EXT_debug_utils)": [ + "(VK_EXT_debug_utils)+!(VKSC_VERSION_1_0)": [ { "vuid": "VUID-vkDestroyDebugUtilsMessengerEXT-messenger-01915", "text": " If <code>VkAllocationCallbacks</code> were provided when <code>messenger</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here" @@ -83981,7 +85037,9 @@ { "vuid": "VUID-vkDestroyDebugUtilsMessengerEXT-messenger-01916", "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>messenger</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" - }, + } + ], + "(VK_EXT_debug_utils)": [ { "vuid": "VUID-vkDestroyDebugUtilsMessengerEXT-instance-parameter", "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkInstance\">VkInstance</a> handle" @@ -84257,7 +85315,7 @@ ] }, "vkDestroyDebugReportCallbackEXT": { - "(VK_EXT_debug_report)": [ + "(VK_EXT_debug_report)+!(VKSC_VERSION_1_0)": [ { "vuid": "VUID-vkDestroyDebugReportCallbackEXT-instance-01242", "text": " If <code>VkAllocationCallbacks</code> were provided when <code>callback</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here" @@ -84265,7 +85323,9 @@ { "vuid": "VUID-vkDestroyDebugReportCallbackEXT-instance-01243", "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>callback</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" - }, + } + ], + "(VK_EXT_debug_report)": [ { "vuid": "VUID-vkDestroyDebugReportCallbackEXT-instance-parameter", "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkInstance\">VkInstance</a> handle" @@ -84368,6 +85428,30 @@ } ] }, + "VkFaultData": { + "(VKSC_VERSION_1_0)": [ + { + "vuid": "VUID-VkFaultData-pNext-05019", + "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a valid pointer to an implementation-specific structure" + } + ] + }, + "vkGetFaultData": { + "(VKSC_VERSION_1_0)": [ + { + "vuid": "VUID-vkGetFaultData-pFaultCount-05020", + "text": " <code>pFaultCount</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#limits-maxQueryFaultCount\"><code>maxQueryFaultCount</code></a>" + } + ] + }, + "VkFaultCallbackInfo": { + "(VKSC_VERSION_1_0)": [ + { + "vuid": "VUID-VkFaultCallbackInfo-faultCount-05138", + "text": " <code>faultCount</code> <strong class=\"purple\">must</strong> either be 0, or equal to <a href=\"#limits-maxCallbackFaultCount\"><code>VkPhysicalDeviceVulkanSC10Properties</code>::<code>maxCallbackFaultCount</code></a>" + } + ] + }, "vkGetDeviceFaultInfoEXT": { "(VK_EXT_device_fault)": [ { @@ -85583,6 +86667,12 @@ "text": " If <a href=\"#features-storageInputOutput16\"><code>storageInputOutput16</code></a> is <code>VK_FALSE</code>, then objects containing 16-bit integer or 16-bit floating-point elements <strong class=\"purple\">must</strong> not have {StorageClass} of <code>Input</code> or <code>Output</code>" } ], + "(VKSC_VERSION_1_0)": [ + { + "vuid": "VUID-RuntimeSpirv-OpAtomic-05091", + "text": " If <a href=\"#features-shaderAtomicInstructions\">shaderAtomicInstructions</a> is not enabled, the SPIR-V Atomic Instructions listed in 3.37.18 (<code>OpAtomic*</code>) <strong class=\"purple\">must</strong> not be used <a href=\"#SCID-1\">[SCID-1]</a>" + } + ], "(VK_VERSION_1_1)": [ { "vuid": "VUID-RuntimeSpirv-None-06343", diff --git a/registry/vk.xml b/registry/vk.xml index d3907eb..f5300a3 100644 --- a/registry/vk.xml +++ b/registry/vk.xml @@ -174,7 +174,7 @@ branch of the member gitlab server. #define <name>VKSC_API_VERSION_1_0</name> <type>VK_MAKE_API_VERSION</type>(VKSC_API_VARIANT, 1, 0, 0)// Patch version should always be set to 0</type> <type api="vulkan" category="define">// Version of this file -#define <name>VK_HEADER_VERSION</name> 251</type> +#define <name>VK_HEADER_VERSION</name> 252</type> <type api="vulkan" category="define" requires="VK_HEADER_VERSION">// Complete version of this file #define <name>VK_HEADER_VERSION_COMPLETE</name> <type>VK_MAKE_API_VERSION</type>(0, 1, 3, VK_HEADER_VERSION)</type> <type api="vulkansc" category="define">// Version of this file @@ -2881,7 +2881,7 @@ typedef void* <name>MTLSharedEvent_id</name>; <member><type>VkSemaphoreSciSyncPoolNV</type> <name>semaphorePool</name></member> <member>const <type>NvSciSyncFence</type>* <name>pFence</name></member> </type> - <type category="struct" name="VkDeviceSemaphoreSciSyncPoolReservationCreateInfoNV" allowduplicate="true" structextends="VkDeviceObjectReservationCreateInfo"> + <type category="struct" name="VkDeviceSemaphoreSciSyncPoolReservationCreateInfoNV" allowduplicate="true" structextends="VkDeviceCreateInfo"> <member values="VK_STRUCTURE_TYPE_DEVICE_SEMAPHORE_SCI_SYNC_POOL_RESERVATION_CREATE_INFO_NV"><type>VkStructureType</type> <name>sType</name></member> <member optional="true">const <type>void</type>* <name>pNext</name></member> <member><type>uint32_t</type> <name>semaphoreSciSyncPoolRequestCount</name></member> @@ -5028,7 +5028,7 @@ typedef void* <name>MTLSharedEvent_id</name>; <member optional="true">const <type>void</type>* <name>pNext</name></member> <member><type>uint32_t</type> <name>counterPassIndex</name><comment>Index for which counter pass to submit</comment></member> </type> - <type category="struct" name="VkPerformanceQueryReservationInfoKHR" allowduplicate="true" structextends="VkDeviceObjectReservationCreateInfo"> + <type category="struct" name="VkPerformanceQueryReservationInfoKHR" allowduplicate="true" structextends="VkDeviceCreateInfo"> <member values="VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_RESERVATION_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member> <member optional="true">const <type>void</type>* <name>pNext</name></member> <member><type>uint32_t</type> <name>maxPerformanceQueriesPerPool</name><comment>Maximum number of VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR queries in a query pool</comment></member> @@ -5539,7 +5539,7 @@ typedef void* <name>MTLSharedEvent_id</name>; </type> <type category="struct" name="VkFaultCallbackInfo" structextends="VkDeviceCreateInfo"> <member values="VK_STRUCTURE_TYPE_FAULT_CALLBACK_INFO"><type>VkStructureType</type> <name>sType</name></member> - <member optional="true"><type>void</type>* <name>pNext</name></member> + <member optional="true">const <type>void</type>* <name>pNext</name></member> <member optional="true"><type>uint32_t</type> <name>faultCount</name></member> <member optional="true" len="faultCount"><type>VkFaultData</type>*<name>pFaults</name></member> <member><type>PFN_vkFaultCallbackFunction</type> <name>pfnFaultCallback</name></member> @@ -7728,6 +7728,11 @@ typedef void* <name>MTLSharedEvent_id</name>; <member noautovalidity="true" optional="true"><type>void</type>* <name>pNext</name></member> <member><type>VkBool32</type> <name>shaderEarlyAndLateFragmentTests</name></member> </type> + <type category="struct" name="VkExternalMemoryAcquireUnmodifiedEXT" structextends="VkBufferMemoryBarrier,VkBufferMemoryBarrier2,VkImageMemoryBarrier,VkImageMemoryBarrier2"> + <member values="VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_EXT"><type>VkStructureType</type> <name>sType</name></member> + <member optional="true">const <type>void</type>* <name>pNext</name></member> + <member><type>VkBool32</type> <name>acquireUnmodifiedMemory</name></member> + </type> <type category="struct" name="VkExportMetalObjectCreateInfoEXT" structextends="VkInstanceCreateInfo,VkMemoryAllocateInfo,VkImageCreateInfo,VkImageViewCreateInfo,VkBufferViewCreateInfo,VkSemaphoreCreateInfo,VkEventCreateInfo" allowduplicate="true"> <member values="VK_STRUCTURE_TYPE_EXPORT_METAL_OBJECT_CREATE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member> <member optional="true">const <type>void</type>* <name>pNext</name></member> @@ -10345,6 +10350,7 @@ typedef void* <name>MTLSharedEvent_id</name>; <param optional="false,true"><type>uint32_t</type>* <name>pPropertyCount</name></param> <param optional="true" len="pPropertyCount"><type>VkLayerProperties</type>* <name>pProperties</name></param> </command> + <command successcodes="VK_SUCCESS,VK_INCOMPLETE" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_LAYER_NOT_PRESENT"> <proto><type>VkResult</type> <name>vkEnumerateDeviceExtensionProperties</name></proto> <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param> @@ -15486,13 +15492,11 @@ typedef void* <name>MTLSharedEvent_id</name>; <type name="VkShaderModuleCreateFlagBits"/> <type name="VkShaderModuleCreateInfo"/> <type name="VkCommandPoolTrimFlags"/> - <type name="VkCommandPoolTrimFlagsKHR"/> <command name="vkCreateShaderModule"/> <command name="vkDestroyShaderModule"/> <command name="vkMergePipelineCaches"/> <command name="vkGetPipelineCacheData"/> <command name="vkTrimCommandPool"/> - <command name="vkTrimCommandPoolKHR"/> <command name="vkDestroyCommandPool"/> <command name="vkDestroyDescriptorPool"/> <command name="vkDestroyQueryPool"/> @@ -21391,10 +21395,12 @@ typedef void* <name>MTLSharedEvent_id</name>; <enum bitpos="50" extends="VkAccessFlagBits2" name="VK_ACCESS_2_RESERVED_50_BIT_ARM"/> </require> </extension> - <extension name="VK_GOOGLE_extension_454" number="454" author="GOOGLE" contact="Lina Versace @versalinyaa" supported="disabled"> + <extension name="VK_EXT_external_memory_acquire_unmodified" number="454" type="device" depends="VK_KHR_external_memory" author="EXT" contact="Lina Versace @versalinyaa" supported="vulkan" ratified="vulkan"> <require> - <enum value="0" name="VK_GOOGLE_EXTENSION_454_SPEC_VERSION"/> - <enum value=""VK_GOOGLE_extension_454"" name="VK_GOOGLE_EXTENSION_454_EXTENSION_NAME"/> + <enum value="1" name="VK_EXT_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_SPEC_VERSION"/> + <enum value=""VK_EXT_external_memory_acquire_unmodified"" name="VK_EXT_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_EXTENSION_NAME"/> + <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_EXT"/> + <type name="VkExternalMemoryAcquireUnmodifiedEXT"/> </require> </extension> <extension name="VK_GOOGLE_extension_455" number="455" author="GOOGLE" contact="Lina Versace @versalinyaa" supported="disabled"> diff --git a/registry/vkconventions.py b/registry/vkconventions.py index 5cc5890..b4e7966 100644..100755 --- a/registry/vkconventions.py +++ b/registry/vkconventions.py @@ -108,6 +108,7 @@ class VulkanConventions(ConventionsBase): subpats = [ [ r'_H_(26[45])_', r'_H\1_' ], [ r'_VULKAN_([0-9])([0-9])_', r'_VULKAN_\1_\2_' ], + [ r'_VULKAN_SC_([0-9])([0-9])_',r'_VULKAN_SC_\1_\2_' ], [ r'_DIRECT_FB_', r'_DIRECTFB_' ], [ r'_VULKAN_SC_10', r'_VULKAN_SC_1_0' ], @@ -277,3 +278,21 @@ class VulkanConventions(ConventionsBase): """Return any extra text (following the title) for generated reference pages.""" return 'include::{generated}/specattribs.adoc[]' + + +class VulkanSCConventions(VulkanConventions): + + def specURL(self, spectype='api'): + """Return public registry URL which ref pages should link to for the + current all-extensions HTML specification, so xrefs in the + asciidoc source that are not to ref pages can link into it + instead. N.b. this may need to change on a per-refpage basis if + there are multiple documents involved. + """ + return 'https://registry.khronos.org/vulkansc/specs/1.0-extensions/html/vkspec.html' + + @property + def xml_api_name(self): + """Return the name used in the default API XML registry for the default API""" + return 'vulkansc' + |