Structures

VkPipelineBinaryCreateInfoKHR

Structure specifying where to retrieve data for pipeline binary creation

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 is NULL or a pointer to a structure extending this structure.
  • pKeysAndDataInfo is NULL or a pointer to a VkPipelineBinaryKeysAndDataKHR structure that contains keys and data to create the pipeline binaries from.
  • pipeline is VK_NULL_HANDLE or a VkPipeline that contains data to create the pipeline binaries from.
  • pPipelineCreateInfo is NULL 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-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-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