VkPipelineBinaryCreateInfoKHR
The VkPipelineBinaryCreateInfoKHR structure is defined as:
typedef struct VkPipelineBinaryCreateInfoKHR {
VkStructureType sType;
const void* pNext;
const VkPipelineBinaryKeysAndDataKHR* pKeysAndDataInfo;
VkPipeline pipeline;
const VkPipelineCreateInfoKHR* pPipelineCreateInfo;
} VkPipelineBinaryCreateInfoKHR;
sTypeis a VkStructureType value identifying this structure.pNextisNULLor a pointer to a structure extending this structure.pKeysAndDataInfoisNULLor a pointer to a VkPipelineBinaryKeysAndDataKHR structure that contains keys and data to create the pipeline binaries from.pipelineis VK_NULL_HANDLE or aVkPipelinethat contains data to create the pipeline binaries from.pPipelineCreateInfoisNULLor a pointer to a VkPipelineCreateInfoKHR structure with the pipeline creation info. This is used to probe the implementation’s internal cache for pipeline binaries.
When pPipelineCreateInfo is not NULL, an implementation will attempt
to retrieve pipeline binary data from an internal cache external to the
application if
pipelineBinaryInternalCache is
VK_TRUE.
Applications can use this to determine if a pipeline can be created
without compilation.
If the implementation fails to create a pipeline binary due to missing an
internal cache entry, VK_PIPELINE_BINARY_MISSING_KHR is returned.
If creation succeeds, the resulting binary can be used to create a
pipeline.
VK_PIPELINE_BINARY_MISSING_KHR may be returned for any reason in this
situation, even if creating a pipeline binary with the same parameters that
succeeded earlier.
If
pipelineBinaryPrecompiledInternalCache
is VK_TRUE, the implementation may be able to create pipeline
binaries even when pPipelineCreateInfo has not been used to create
binaries before by the application.
On some platforms, internal pipeline caches may be pre-populated before running the application.
Valid Usage
VUID-VkPipelineBinaryCreateInfoKHR-pipeline-09607
If pipeline is not VK_NULL_HANDLE, pipeline must have
been created with VK_PIPELINE_CREATE_2_CAPTURE_DATA_BIT_KHR
VUID-VkPipelineBinaryCreateInfoKHR-pipeline-09608
If pipeline is not VK_NULL_HANDLE,
vkReleaseCapturedPipelineDataKHR must not have been called on
pipeline prior to this command
VUID-VkPipelineBinaryCreateInfoKHR-pipelineBinaryInternalCache-09609
If
pipelineBinaryInternalCache
is VK_FALSE pPipelineCreateInfo must be NULL
VUID-VkPipelineBinaryCreateInfoKHR-device-09610
If device was created with
VkDevicePipelineBinaryInternalCacheControlKHR::disableInternalCache
set to VK_TRUE, pPipelineCreateInfo must be NULL
VUID-VkPipelineBinaryCreateInfoKHR-pKeysAndDataInfo-09619
One and only one of pKeysAndDataInfo, pipeline, or
pPipelineCreateInfo must be non-NULL
VUID-VkPipelineBinaryCreateInfoKHR-pPipelineCreateInfo-09606
If pPipelineCreateInfo is not NULL, the pNext chain of
pPipelineCreateInfo must not set
VkPipelineBinaryInfoKHR::binaryCount to a value greater than
0
Valid Usage (Implicit)
VUID-VkPipelineBinaryCreateInfoKHR-sType-sType
sType must be VK_STRUCTURE_TYPE_PIPELINE_BINARY_CREATE_INFO_KHR
VUID-VkPipelineBinaryCreateInfoKHR-pNext-pNext
pNext must be NULL
VUID-VkPipelineBinaryCreateInfoKHR-pKeysAndDataInfo-parameter
If pKeysAndDataInfo is not NULL, pKeysAndDataInfo must be a valid pointer to a valid VkPipelineBinaryKeysAndDataKHR structure
VUID-VkPipelineBinaryCreateInfoKHR-pipeline-parameter
If pipeline is not VK_NULL_HANDLE, pipeline must be a valid VkPipeline handle
VUID-VkPipelineBinaryCreateInfoKHR-pPipelineCreateInfo-parameter
If pPipelineCreateInfo is not NULL, pPipelineCreateInfo must be a valid pointer to a valid VkPipelineCreateInfoKHR structure