vkCreatePipelineCache
To create pipeline cache objects, call:
VkResult vkCreatePipelineCache(
VkDevice device,
const VkPipelineCacheCreateInfo* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
VkPipelineCache* pPipelineCache);
device
is the logical device that creates the pipeline cache object.pCreateInfo
is a pointer to a VkPipelineCacheCreateInfo structure containing initial parameters for the pipeline cache object.pAllocator
controls host memory allocation as described in the Memory Allocation chapter.pPipelineCache
is a pointer to a VkPipelineCache handle in which the resulting pipeline cache object is returned.
Applications can track and manage the total host memory size of a pipeline
cache object using the pAllocator
.
Applications can limit the amount of data retrieved from a pipeline cache
object in vkGetPipelineCacheData
.
Implementations should not internally limit the total number of entries
added to a pipeline cache object or the total host memory consumed.
Once created, a pipeline cache can be passed to the vkCreateGraphicsPipelines
vkCreateRayTracingPipelinesKHR, vkCreateRayTracingPipelinesNV, and vkCreateComputePipelines commands. If the pipeline cache passed into these commands is not VK_NULL_HANDLE, the implementation will query it for possible reuse opportunities and update it with new content. The use of the pipeline cache object in these commands is internally synchronized, and the same pipeline cache object can be used in multiple threads simultaneously.
If flags
of pCreateInfo
includes
VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT
, all commands
that modify the returned pipeline cache object must be
externally synchronized.
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 vkCreate*Pipelines
commands.
Valid Usage (Implicit)
VUID-vkCreatePipelineCache-device-parameter
device
must be a valid VkDevice handle
VUID-vkCreatePipelineCache-pCreateInfo-parameter
pCreateInfo
must be a valid pointer to a valid VkPipelineCacheCreateInfo structure
VUID-vkCreatePipelineCache-pAllocator-parameter
If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks structure
VUID-vkCreatePipelineCache-pPipelineCache-parameter
pPipelineCache
must be a valid pointer to a VkPipelineCache handle