Class EXTValidationCache
VkValidationCacheEXT object type, which is managed similarly to the existing VkPipelineCache.
The new struct VkShaderModuleValidationCacheCreateInfoEXT can be included in the pNext chain at CreateShaderModule time. It contains a VkValidationCacheEXT to use when validating the VkShaderModule.
- Name String
VK_EXT_validation_cache- Extension Type
- Device extension
- Registered Extension Number
- 161
- Revision
- 1
- Contact
- Cort Stratton cdwfs
Other Extension Metadata
- Last Modified Date
- 2017-08-29
- IP Status
- No known IP claims.
- Contributors
- Cort Stratton, Google
- Chris Forbes, Google
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final StringThe extension name.static final intThe extension specification version.static final intExtendsVkObjectType.static final intExtendsVkStructureType.static final intExtendsVkStructureType.static final intVkValidationCacheHeaderVersionEXT - Encode validation cache version -
Method Summary
Modifier and TypeMethodDescriptionstatic intnvkCreateValidationCacheEXT(org.lwjgl.vulkan.VkDevice device, long pCreateInfo, long pAllocator, long pValidationCache) Unsafe version of:CreateValidationCacheEXTstatic voidnvkDestroyValidationCacheEXT(org.lwjgl.vulkan.VkDevice device, long validationCache, long pAllocator) Unsafe version of:DestroyValidationCacheEXTstatic intnvkGetValidationCacheDataEXT(org.lwjgl.vulkan.VkDevice device, long validationCache, long pDataSize, long pData) Unsafe version of:GetValidationCacheDataEXTstatic intnvkMergeValidationCachesEXT(org.lwjgl.vulkan.VkDevice device, long dstCache, int srcCacheCount, long pSrcCaches) Unsafe version of:MergeValidationCachesEXTstatic intvkCreateValidationCacheEXT(org.lwjgl.vulkan.VkDevice device, VkValidationCacheCreateInfoEXT pCreateInfo, @Nullable VkAllocationCallbacks pAllocator, long[] pValidationCache) Array version of:CreateValidationCacheEXTstatic intvkCreateValidationCacheEXT(org.lwjgl.vulkan.VkDevice device, VkValidationCacheCreateInfoEXT pCreateInfo, @Nullable VkAllocationCallbacks pAllocator, LongBuffer pValidationCache) Creates a new validation cache.static voidvkDestroyValidationCacheEXT(org.lwjgl.vulkan.VkDevice device, long validationCache, @Nullable VkAllocationCallbacks pAllocator) Destroy a validation cache object.static intvkGetValidationCacheDataEXT(org.lwjgl.vulkan.VkDevice device, long validationCache, org.lwjgl.PointerBuffer pDataSize, @Nullable ByteBuffer pData) Get the data store from a validation cache.static intvkMergeValidationCachesEXT(org.lwjgl.vulkan.VkDevice device, long dstCache, long[] pSrcCaches) Array version of:MergeValidationCachesEXTstatic intvkMergeValidationCachesEXT(org.lwjgl.vulkan.VkDevice device, long dstCache, LongBuffer pSrcCaches) Combine the data stores of validation caches.
-
Field Details
-
VK_EXT_VALIDATION_CACHE_SPEC_VERSION
public static final int VK_EXT_VALIDATION_CACHE_SPEC_VERSIONThe extension specification version.- See Also:
-
VK_EXT_VALIDATION_CACHE_EXTENSION_NAME
The extension name.- See Also:
-
VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT
public static final int VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXTExtendsVkStructureType.Enum values:
- See Also:
-
VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT
public static final int VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXTExtendsVkStructureType.Enum values:
- See Also:
-
VK_OBJECT_TYPE_VALIDATION_CACHE_EXT
public static final int VK_OBJECT_TYPE_VALIDATION_CACHE_EXTExtendsVkObjectType.- See Also:
-
VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT
public static final int VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXTVkValidationCacheHeaderVersionEXT - Encode validation cache versionDescription
VALIDATION_CACHE_HEADER_VERSION_ONE_EXTspecifies version one of the validation cache.
See Also
- See Also:
-
-
Method Details
-
nvkCreateValidationCacheEXT
public static int nvkCreateValidationCacheEXT(org.lwjgl.vulkan.VkDevice device, long pCreateInfo, long pAllocator, long pValidationCache) Unsafe version of:CreateValidationCacheEXT -
vkCreateValidationCacheEXT
public static int vkCreateValidationCacheEXT(org.lwjgl.vulkan.VkDevice device, VkValidationCacheCreateInfoEXT pCreateInfo, @Nullable VkAllocationCallbacks pAllocator, LongBuffer pValidationCache) Creates a new validation cache.C Specification
To create validation cache objects, call:
VkResult vkCreateValidationCacheEXT( VkDevice device, const VkValidationCacheCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkValidationCacheEXT* pValidationCache);Description
Note
Applications can track and manage the total host memory size of a validation cache object using the
pAllocator. Applications can limit the amount of data retrieved from a validation cache object invkGetValidationCacheDataEXT. Implementations should not internally limit the total number of entries added to a validation cache object or the total host memory consumed.Once created, a validation cache can be passed to the
vkCreateShaderModulecommand by adding this object to theVkShaderModuleCreateInfostructure’spNextchain. If aVkShaderModuleValidationCacheCreateInfoEXTobject is included in theVkShaderModuleCreateInfo::pNextchain, and itsvalidationCachefield is notNULL_HANDLE, the implementation will query it for possible reuse opportunities and update it with new content. The use of the validation cache object in these commands is internally synchronized, and the same validation cache object can be used in multiple threads simultaneously.Note
Implementations should make every effort to limit any critical sections to the actual accesses to the cache, which is expected to be significantly shorter than the duration of the
vkCreateShaderModulecommand.Valid Usage (Implicit)
devicemust be a validVkDevicehandlepCreateInfomust be a valid pointer to a validVkValidationCacheCreateInfoEXTstructure- If
pAllocatoris notNULL,pAllocatormust be a valid pointer to a validVkAllocationCallbacksstructure pValidationCachemust be a valid pointer to aVkValidationCacheEXThandle
Return Codes
- On success, this command returns
- On failure, this command returns
See Also
- Parameters:
device- the logical device that creates the validation cache object.pCreateInfo- a pointer to aVkValidationCacheCreateInfoEXTstructure containing the initial parameters for the validation cache object.pAllocator- controls host memory allocation as described in the Memory Allocation chapter.pValidationCache- a pointer to aVkValidationCacheEXThandle in which the resulting validation cache object is returned.
-
nvkDestroyValidationCacheEXT
public static void nvkDestroyValidationCacheEXT(org.lwjgl.vulkan.VkDevice device, long validationCache, long pAllocator) Unsafe version of:DestroyValidationCacheEXT -
vkDestroyValidationCacheEXT
public static void vkDestroyValidationCacheEXT(org.lwjgl.vulkan.VkDevice device, long validationCache, @Nullable VkAllocationCallbacks pAllocator) Destroy a validation cache object.C Specification
To destroy a validation cache, call:
void vkDestroyValidationCacheEXT( VkDevice device, VkValidationCacheEXT validationCache, const VkAllocationCallbacks* pAllocator);Valid Usage
- If
VkAllocationCallbackswere provided whenvalidationCachewas created, a compatible set of callbacks must be provided here - If no
VkAllocationCallbackswere provided whenvalidationCachewas created,pAllocatormust beNULL
Valid Usage (Implicit)
devicemust be a validVkDevicehandle- If
validationCacheis notNULL_HANDLE,validationCachemust be a validVkValidationCacheEXThandle - If
pAllocatoris notNULL,pAllocatormust be a valid pointer to a validVkAllocationCallbacksstructure - If
validationCacheis a valid handle, it must have been created, allocated, or retrieved fromdevice
Host Synchronization
- Host access to
validationCachemust be externally synchronized
See Also
- Parameters:
device- the logical device that destroys the validation cache object.validationCache- the handle of the validation cache to destroy.pAllocator- controls host memory allocation as described in the Memory Allocation chapter.
- If
-
nvkMergeValidationCachesEXT
public static int nvkMergeValidationCachesEXT(org.lwjgl.vulkan.VkDevice device, long dstCache, int srcCacheCount, long pSrcCaches) Unsafe version of:MergeValidationCachesEXT- Parameters:
srcCacheCount- the length of thepSrcCachesarray.
-
vkMergeValidationCachesEXT
public static int vkMergeValidationCachesEXT(org.lwjgl.vulkan.VkDevice device, long dstCache, LongBuffer pSrcCaches) Combine the data stores of validation caches.C Specification
Validation cache objects can be merged using the command:
VkResult vkMergeValidationCachesEXT( VkDevice device, VkValidationCacheEXT dstCache, uint32_t srcCacheCount, const VkValidationCacheEXT* pSrcCaches);Description
Note
The details of the merge operation are implementation-dependent, but implementations should merge the contents of the specified validation caches and prune duplicate entries.
Valid Usage
dstCachemust not appear in the list of source caches
Valid Usage (Implicit)
devicemust be a validVkDevicehandledstCachemust be a validVkValidationCacheEXThandlepSrcCachesmust be a valid pointer to an array ofsrcCacheCountvalidVkValidationCacheEXThandlessrcCacheCountmust be greater than 0dstCachemust have been created, allocated, or retrieved fromdevice- Each element of
pSrcCachesmust have been created, allocated, or retrieved fromdevice
Host Synchronization
- Host access to
dstCachemust be externally synchronized
Return Codes
- On success, this command returns
- On failure, this command returns
- Parameters:
device- the logical device that owns the validation cache objects.dstCache- the handle of the validation cache to merge results into.pSrcCaches- a pointer to an array of validation cache handles, which will be merged intodstCache. The previous contents ofdstCacheare included after the merge.
-
nvkGetValidationCacheDataEXT
public static int nvkGetValidationCacheDataEXT(org.lwjgl.vulkan.VkDevice device, long validationCache, long pDataSize, long pData) Unsafe version of:GetValidationCacheDataEXT- Parameters:
pDataSize- a pointer to a value related to the amount of data in the validation cache, as described below.
-
vkGetValidationCacheDataEXT
public static int vkGetValidationCacheDataEXT(org.lwjgl.vulkan.VkDevice device, long validationCache, org.lwjgl.PointerBuffer pDataSize, @Nullable ByteBuffer pData) Get the data store from a validation cache.C Specification
Data can be retrieved from a validation cache object using the command:
VkResult vkGetValidationCacheDataEXT( VkDevice device, VkValidationCacheEXT validationCache, size_t* pDataSize, void* pData);Description
If
pDataisNULL, then the maximum size of the data that can be retrieved from the validation cache, in bytes, is returned inpDataSize. Otherwise,pDataSizemust point to a variable set by the application to the size of the buffer, in bytes, pointed to bypData, and on return the variable is overwritten with the amount of data actually written topData. IfpDataSizeis less than the maximum size that can be retrieved by the validation cache, at mostpDataSizebytes will be written topData, andvkGetValidationCacheDataEXTwill returnINCOMPLETEinstead ofSUCCESS, to indicate that not all of the validation cache was returned.Any data written to
pDatais valid and can be provided as thepInitialDatamember of theVkValidationCacheCreateInfoEXTstructure passed tovkCreateValidationCacheEXT.Two calls to
vkGetValidationCacheDataEXTwith the same parameters must retrieve the same data unless a command that modifies the contents of the cache is called between them.Applications can store the data retrieved from the validation cache, and use these data, possibly in a future run of the application, to populate new validation cache objects. The results of validation, however, may depend on the vendor ID, device ID, driver version, and other details of the device. To enable applications to detect when previously retrieved data is incompatible with the device, the initial bytes written to
pDatamust be a header consisting of the following members:Layout for Validation Cache Header Version
VALIDATION_CACHE_HEADER_VERSION_ONE_EXTOffset Size Meaning 0 4 length in bytes of the entire validation cache header written as a stream of bytes, with the least significant byte first 4 4 a VkValidationCacheHeaderVersionEXTvalue written as a stream of bytes, with the least significant byte first8 UUID_SIZEa layer commit ID expressed as a UUID, which uniquely identifies the version of the validation layers used to generate these validation results The first four bytes encode the length of the entire validation cache header, in bytes. This value includes all fields in the header including the validation cache version field and the size of the length field.
The next four bytes encode the validation cache version, as described for
VkValidationCacheHeaderVersionEXT. A consumer of the validation cache should use the cache version to interpret the remainder of the cache header.If
pDataSizeis less than what is necessary to store this header, nothing will be written topDataand zero will be written topDataSize.Valid Usage (Implicit)
devicemust be a validVkDevicehandlevalidationCachemust be a validVkValidationCacheEXThandlepDataSizemust be a valid pointer to asize_tvalue- If the value referenced by
pDataSizeis not 0, andpDatais notNULL,pDatamust be a valid pointer to an array ofpDataSizebytes validationCachemust have been created, allocated, or retrieved fromdevice
Return Codes
- On success, this command returns
- On failure, this command returns
- Parameters:
device- the logical device that owns the validation cache.validationCache- the validation cache to retrieve data from.pDataSize- a pointer to a value related to the amount of data in the validation cache, as described below.pData- eitherNULLor a pointer to a buffer.
-
vkCreateValidationCacheEXT
public static int vkCreateValidationCacheEXT(org.lwjgl.vulkan.VkDevice device, VkValidationCacheCreateInfoEXT pCreateInfo, @Nullable VkAllocationCallbacks pAllocator, long[] pValidationCache) Array version of:CreateValidationCacheEXT -
vkMergeValidationCachesEXT
public static int vkMergeValidationCachesEXT(org.lwjgl.vulkan.VkDevice device, long dstCache, long[] pSrcCaches) Array version of:MergeValidationCachesEXT
-