VkPipelineBinaryCreateInfoKHR
The VkPipelineBinaryCreateInfoKHR
structure is defined as:
typedef struct VkPipelineBinaryCreateInfoKHR {
VkStructureType sType;
const void* pNext;
const VkPipelineBinaryKeysAndDataKHR* pKeysAndDataInfo;
VkPipeline pipeline;
const VkPipelineCreateInfoKHR* pPipelineCreateInfo;
} VkPipelineBinaryCreateInfoKHR;
sType
is a VkStructureType value identifying this structure.pNext
isNULL
or a pointer to a structure extending this structure.pKeysAndDataInfo
isNULL
or a pointer to a VkPipelineBinaryKeysAndDataKHR structure that contains keys and data to create the pipeline binaries from.pipeline
is VK_NULL_HANDLE or aVkPipeline
that contains data to create the pipeline binaries from.pPipelineCreateInfo
isNULL
or 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