vulkan
Safe HaskellSafe-Inferred
LanguageHaskell2010

Vulkan.Extensions.VK_KHR_pipeline_binary

Description

Name

VK_KHR_pipeline_binary - device extension

VK_KHR_pipeline_binary

Name String
VK_KHR_pipeline_binary
Extension Type
Device extension
Registered Extension Number
484
Revision
1
Ratification Status
Ratified
Extension and Version Dependencies
VK_KHR_maintenance5
Contact
Extension Proposal
VK_KHR_pipeline_binary

Other Extension Metadata

Last Modified Date
2024-07-01
Contributors
  • Stu Smith, AMD
  • Tobias Hector, AMD
  • Alan Harrison, AMD
  • Maciej Jesionowski, AMD
  • Younggwan Kim, Arm
  • Jan-Harald Fredriksen, Arm
  • Ting Wei, Arm
  • Chris Glover, Google
  • Shahbaz Youssefi, Google
  • Jakub Kuderski, Google
  • Piotr Byszewski, Mobica
  • Piers Daniell, NVIDIA
  • Ralph Potter, Samsung
  • Matthew Netsch, Qualcomm
  • Hans-Kristian Arntzen, Valve
  • Samuel Pitoiset, Valve
  • Tatsuyuki Ishi, Valve

Description

This extension provides a method to obtain binary data associated with individual pipelines such that applications can manage caching themselves instead of using VkPipelineCache objects.

New Object Types

New Commands

New Structures

New Enum Constants

Version History

  • Revision 1, 2021-12-10 (Chris Glover)

    • Initial draft.

See Also

No cross-references are available

Document Notes

For more information, see the Vulkan Specification

This page is a generated document. Fixes and changes should be made to the generator scripts, not directly.

Synopsis

Documentation

createPipelineBinariesKHR Source #

Arguments

:: forall io. MonadIO io 
=> Device

device is the logical device that creates the pipeline binary objects.

-> PipelineBinaryCreateInfoKHR

pCreateInfo is a pointer to a PipelineBinaryCreateInfoKHR structure that contains the data to create the pipeline binaries from.

-> ("allocator" ::: Maybe AllocationCallbacks)

pAllocator controls host memory allocation as described in the Memory Allocation chapter.

-> io (Result, "binaries" ::: PipelineBinaryHandlesInfoKHR) 

vkCreatePipelineBinariesKHR - Create pipeline binaries from a pipeline or previously retrieved data

Description

The implementation will attempt to create all pipeline binaries. If creation fails for any pipeline binary, then:

Valid Usage (Implicit)

  • device must be a valid Device handle

Return Codes

Success
Failure

See Also

VK_KHR_pipeline_binary, AllocationCallbacks, Device, PipelineBinaryCreateInfoKHR, PipelineBinaryHandlesInfoKHR

destroyPipelineBinaryKHR Source #

Arguments

:: forall io. MonadIO io 
=> Device

device is the logical device that created the pipeline binary object.

-> PipelineBinaryKHR

pipelineBinary is the handle of the pipeline binary object to destroy.

-> ("allocator" ::: Maybe AllocationCallbacks)

pAllocator controls host memory allocation as described in the Memory Allocation chapter.

-> io () 

vkDestroyPipelineBinaryKHR - Destroy a pipeline binary

Valid Usage

  • If AllocationCallbacks were provided when pipelineBinary was created, a compatible set of callbacks must be provided here
  • If no AllocationCallbacks were provided when pipelineBinary was created, pAllocator must be NULL

Valid Usage (Implicit)

  • device must be a valid Device handle
  • If pipelineBinary is not NULL_HANDLE, pipelineBinary must be a valid PipelineBinaryKHR handle
  • If pAllocator is not NULL, pAllocator must be a valid pointer to a valid AllocationCallbacks structure
  • If pipelineBinary is a valid handle, it must have been created, allocated, or retrieved from device

Host Synchronization

  • Host access to pipelineBinary must be externally synchronized

See Also

VK_KHR_pipeline_binary, AllocationCallbacks, Device, PipelineBinaryKHR

getPipelineKeyKHR Source #

Arguments

:: forall io. MonadIO io 
=> Device

device is the logical device that creates the pipeline object.

-> ("pipelineCreateInfo" ::: Maybe PipelineCreateInfoKHR)

pPipelineCreateInfo is NULL or a pointer to a PipelineCreateInfoKHR structure.

-> io ("pipelineKey" ::: PipelineBinaryKeyKHR) 

vkGetPipelineKeyKHR - Generate the pipeline key from pipeline creation info

Description

If pPipelineCreateInfo is NULL, then the implementation must return the global key that applies to all pipelines. If the key obtained in this way changes between saving and restoring data obtained from getPipelineBinaryDataKHR in a different Device, then the application must assume that the restored data is invalid and cannot be passed to createPipelineBinariesKHR. Otherwise the application can assume the data is still valid.

If pPipelineCreateInfo is not NULL, the key obtained functions as a method to compare two pipeline creation info structures. Implementations may not compare parts of a pipeline creation info which would not contribute to the final binary output. If a shader module identifier is used instead of a shader module, the pPipelineKey generated must be equal to the key generated when using the shader module from which the identifier was queried. If the content of two pPipelineKey are equal, pipelines created with the two pPipelineCreateInfo->pname:pNext create infos must produce the same PipelineBinaryKHR contents.

The pipeline key is distinct from pipeline binary key. Pipeline binary keys can only be obtained after compilation. The pipeline key is intended to optionally allow associating pipeline create info with multiple pipeline binary keys.

Valid Usage

  • The pNext chain of pPipelineCreateInfo must not set PipelineBinaryInfoKHR::binaryCount to a value greater than 0

Valid Usage (Implicit)

  • device must be a valid Device handle

Return Codes

Success
Failure

See Also

VK_KHR_pipeline_binary, Device, PipelineBinaryKeyKHR, PipelineCreateInfoKHR

getPipelineBinaryDataKHR Source #

Arguments

:: forall io. MonadIO io 
=> Device

device is the logical device that created the pipeline binary.

-> PipelineBinaryDataInfoKHR

pInfo is a pointer to a PipelineBinaryDataInfoKHR structure which describes the pipeline binary to get data from.

-> io (PipelineBinaryKeyKHR, "pipelineBinaryData" ::: ByteString) 

vkGetPipelineBinaryDataKHR - Get the data store from a pipeline binary

Description

If pPipelineBinaryData is NULL, then the size of the data, in bytes, that is required to store the binary is returned in pPipelineBinaryDataSize. Otherwise, pPipelineBinaryDataSize must contain the size of the buffer, in bytes, pointed to by pPipelineBinaryData, and on return pPipelineBinaryDataSize is overwritten with the size of the data, in bytes, that is required to store the binary. If pPipelineBinaryDataSize is less than the size that is required to store the binary, nothing is written to pPipelineBinaryData and ERROR_NOT_ENOUGH_SPACE_KHR will be returned, instead of SUCCESS.

If pipelineBinaryCompressedData is FALSE, implementations should not return compressed pipeline binary data to the application.

Valid Usage (Implicit)

  • device must be a valid Device handle
  • pInfo must be a valid pointer to a valid PipelineBinaryDataInfoKHR structure
  • pPipelineBinaryKey must be a valid pointer to a PipelineBinaryKeyKHR structure
  • pPipelineBinaryDataSize must be a valid pointer to a size_t value
  • If the value referenced by pPipelineBinaryDataSize is not 0, and pPipelineBinaryData is not NULL, pPipelineBinaryData must be a valid pointer to an array of pPipelineBinaryDataSize bytes

Return Codes

Success
Failure

See Also

VK_KHR_pipeline_binary, Device, PipelineBinaryDataInfoKHR, PipelineBinaryKeyKHR

releaseCapturedPipelineDataKHR Source #

Arguments

:: forall io. MonadIO io 
=> Device

device is the logical device that created the pipeline object.

-> ReleaseCapturedPipelineDataInfoKHR

pInfo is a pointer to a ReleaseCapturedPipelineDataInfoKHR structure which describes the pipeline to release the data from.

-> ("allocator" ::: Maybe AllocationCallbacks)

pAllocator controls host memory allocation as described in the Memory Allocation chapter.

-> io () 

vkReleaseCapturedPipelineDataKHR - Release captured pipeline binary data

Description

The implementation may free any resources captured as a result of creating the pipeline with PIPELINE_CREATE_2_CAPTURE_DATA_BIT_KHR and put the pipeline into a state as if PIPELINE_CREATE_2_CAPTURE_DATA_BIT_KHR had not been provided at pipeline creation time.

Any resources captured as a result of creating the pipeline with PIPELINE_CREATE_2_CAPTURE_DATA_BIT_KHR are implicitly freed by destroyPipeline.

Valid Usage

  • If AllocationCallbacks were provided when pipeline was created, a compatible set of callbacks must be provided in pAllocator

Valid Usage (Implicit)

  • device must be a valid Device handle

Host Synchronization

  • Host access to pInfo->pipeline must be externally synchronized

Return Codes

Success
Failure
None

See Also

VK_KHR_pipeline_binary, AllocationCallbacks, Device, ReleaseCapturedPipelineDataInfoKHR

data PipelineBinaryCreateInfoKHR Source #

VkPipelineBinaryCreateInfoKHR - Structure specifying where to retrieve data for pipeline binary creation

Description

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 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, PIPELINE_BINARY_MISSING_KHR is returned. If creation succeeds, the resulting binary can be used to create a pipeline. 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 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

Valid Usage (Implicit)

See Also

VK_KHR_pipeline_binary, Pipeline, PipelineBinaryKeysAndDataKHR, PipelineCreateInfoKHR, StructureType, createPipelineBinariesKHR

Constructors

PipelineBinaryCreateInfoKHR 

Fields

data PipelineBinaryHandlesInfoKHR Source #

VkPipelineBinaryHandlesInfoKHR - Structure containing newly created pipeline binaries

Description

If pPipelineBinaries is NULL, the number of binaries that would be created is returned in pipelineBinaryCount. Otherwise, pipelineBinaryCount must be the number of entries in the pPipelineBinaries array, and on return from createPipelineBinariesKHR pipelineBinaryCount is overwritten with the number of handles actually written to pPipelineBinaries. If the value of pipelineBinaryCount is less than the number of binaries that would have been created, at most pipelineBinaryCount handles will be written to pPipelineBinaries and INCOMPLETE will be returned instead of SUCCESS, to indicate that pPipelineBinaries was not large enough to create all the binaries.

Valid Usage (Implicit)

  • pNext must be NULL
  • If pipelineBinaryCount is not 0, and pPipelineBinaries is not NULL, pPipelineBinaries must be a valid pointer to an array of pipelineBinaryCount PipelineBinaryKHR handles

See Also

VK_KHR_pipeline_binary, PipelineBinaryKHR, StructureType, createPipelineBinariesKHR

Constructors

PipelineBinaryHandlesInfoKHR 

Fields

Instances

Instances details
Storable PipelineBinaryHandlesInfoKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_pipeline_binary

Show PipelineBinaryHandlesInfoKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_pipeline_binary

Eq PipelineBinaryHandlesInfoKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_pipeline_binary

FromCStruct PipelineBinaryHandlesInfoKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_pipeline_binary

ToCStruct PipelineBinaryHandlesInfoKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_pipeline_binary

Zero PipelineBinaryHandlesInfoKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_pipeline_binary

data PipelineBinaryDataKHR Source #

VkPipelineBinaryDataKHR - Structure specifying data and length of a pipeline binary

Valid Usage (Implicit)

See Also

VK_KHR_pipeline_binary, PipelineBinaryKeysAndDataKHR

Constructors

PipelineBinaryDataKHR 

Fields

  • dataSize :: Word64

    dataSize is the size of the pData buffer in bytes.

    dataSize must be greater than 0

  • data' :: Ptr ()

    pData is a pointer to a buffer of size bytes that contains pipeline binary data obtained from getPipelineBinaryDataKHR.

    pData must be a valid pointer to an array of dataSize bytes

Instances

Instances details
Storable PipelineBinaryDataKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_pipeline_binary

Show PipelineBinaryDataKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_pipeline_binary

FromCStruct PipelineBinaryDataKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_pipeline_binary

ToCStruct PipelineBinaryDataKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_pipeline_binary

Zero PipelineBinaryDataKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_pipeline_binary

data PipelineBinaryKeysAndDataKHR Source #

VkPipelineBinaryKeysAndDataKHR - Structure specifying arrays of key and data pairs

Valid Usage (Implicit)

See Also

VK_KHR_pipeline_binary, PipelineBinaryCreateInfoKHR, PipelineBinaryDataKHR, PipelineBinaryKeyKHR

Constructors

PipelineBinaryKeysAndDataKHR 

Fields

data PipelineBinaryKeyKHR Source #

VkPipelineBinaryKeyKHR - Structure specifying a key to a pipeline binary

Description

Any returned values beyond the first keySize bytes are undefined. Implementations must return a keySize greater than 0, and less-or-equal to MAX_PIPELINE_BINARY_KEY_SIZE_KHR.

Two keys are considered equal if keySize is equal and the first keySize bytes of key compare equal.

Implementations may return a different keySize for different binaries.

Implementations should ensure that keySize is large enough to uniquely identify a pipeline binary.

Valid Usage (Implicit)

See Also

VK_KHR_pipeline_binary, PipelineBinaryKeysAndDataKHR, StructureType, getPipelineBinaryDataKHR, getPipelineKeyKHR

Constructors

PipelineBinaryKeyKHR 

Fields

  • keySize :: Word32

    keySize is the size, in bytes, of valid data returned in key.

  • key :: ByteString

    key is a buffer of opaque data specifying a pipeline binary key.

Instances

Instances details
Storable PipelineBinaryKeyKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_pipeline_binary

Show PipelineBinaryKeyKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_pipeline_binary

FromCStruct PipelineBinaryKeyKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_pipeline_binary

ToCStruct PipelineBinaryKeyKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_pipeline_binary

Zero PipelineBinaryKeyKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_pipeline_binary

data PipelineBinaryInfoKHR Source #

VkPipelineBinaryInfoKHR - Structure specifying pipeline binaries to use during pipeline creation

Description

If a PipelineBinaryInfoKHR structure with a binaryCount greater than 0 is included in the pNext chain of any Vk*PipelineCreateInfo structure when creating a pipeline, implementations must use the data in pPipelineBinaries instead of recalculating it. Any shader module identifiers or shader modules declared in PipelineShaderStageCreateInfo instances are ignored.

If this structure is not included in the pNext chain, it is equivalent to specifying this structure with a binaryCount of 0.

Valid Usage

Valid Usage (Implicit)

  • If binaryCount is not 0, pPipelineBinaries must be a valid pointer to an array of binaryCount valid PipelineBinaryKHR handles

See Also

VK_KHR_pipeline_binary, PipelineBinaryKHR, StructureType

Constructors

PipelineBinaryInfoKHR 

Fields

data ReleaseCapturedPipelineDataInfoKHR Source #

VkReleaseCapturedPipelineDataInfoKHR - Structure specifying a pipeline whose captured data is to be released

Valid Usage (Implicit)

See Also

VK_KHR_pipeline_binary, Pipeline, StructureType, releaseCapturedPipelineDataKHR

Constructors

ReleaseCapturedPipelineDataInfoKHR 

Fields

Instances

Instances details
Storable ReleaseCapturedPipelineDataInfoKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_pipeline_binary

Show ReleaseCapturedPipelineDataInfoKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_pipeline_binary

Eq ReleaseCapturedPipelineDataInfoKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_pipeline_binary

FromCStruct ReleaseCapturedPipelineDataInfoKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_pipeline_binary

ToCStruct ReleaseCapturedPipelineDataInfoKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_pipeline_binary

Zero ReleaseCapturedPipelineDataInfoKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_pipeline_binary

data PipelineBinaryDataInfoKHR Source #

VkPipelineBinaryDataInfoKHR - Structure specifying a pipeline binary to retrieve binary data from

Valid Usage (Implicit)

See Also

VK_KHR_pipeline_binary, PipelineBinaryKHR, StructureType, getPipelineBinaryDataKHR

Constructors

PipelineBinaryDataInfoKHR 

Fields

Instances

Instances details
Storable PipelineBinaryDataInfoKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_pipeline_binary

Show PipelineBinaryDataInfoKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_pipeline_binary

Eq PipelineBinaryDataInfoKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_pipeline_binary

FromCStruct PipelineBinaryDataInfoKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_pipeline_binary

ToCStruct PipelineBinaryDataInfoKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_pipeline_binary

Zero PipelineBinaryDataInfoKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_pipeline_binary

data PipelineCreateInfoKHR Source #

VkPipelineCreateInfoKHR - Structure specifying a pipeline createinfo chain

Valid Usage (Implicit)

See Also

VK_KHR_pipeline_binary, PipelineBinaryCreateInfoKHR, StructureType, getPipelineKeyKHR

Constructors

PipelineCreateInfoKHR 

Instances

Instances details
Storable PipelineCreateInfoKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_pipeline_binary

Show PipelineCreateInfoKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_pipeline_binary

Eq PipelineCreateInfoKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_pipeline_binary

FromCStruct PipelineCreateInfoKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_pipeline_binary

ToCStruct PipelineCreateInfoKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_pipeline_binary

Zero PipelineCreateInfoKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_pipeline_binary

data PhysicalDevicePipelineBinaryFeaturesKHR Source #

VkPhysicalDevicePipelineBinaryFeaturesKHR - Structure describing support for pipeline binaries

Members

This structure describes the following feature:

Description

If the PhysicalDevicePipelineBinaryFeaturesKHR structure is included in the pNext chain of the PhysicalDeviceFeatures2 structure passed to getPhysicalDeviceFeatures2, it is filled in to indicate whether each corresponding feature is supported. PhysicalDevicePipelineBinaryFeaturesKHR can also be used in the pNext chain of DeviceCreateInfo to selectively enable these features.

Valid Usage (Implicit)

See Also

VK_KHR_pipeline_binary, Bool32, StructureType

Instances

Instances details
Storable PhysicalDevicePipelineBinaryFeaturesKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_pipeline_binary

Show PhysicalDevicePipelineBinaryFeaturesKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_pipeline_binary

Eq PhysicalDevicePipelineBinaryFeaturesKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_pipeline_binary

FromCStruct PhysicalDevicePipelineBinaryFeaturesKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_pipeline_binary

ToCStruct PhysicalDevicePipelineBinaryFeaturesKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_pipeline_binary

Zero PhysicalDevicePipelineBinaryFeaturesKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_pipeline_binary

data DevicePipelineBinaryInternalCacheControlKHR Source #

VkDevicePipelineBinaryInternalCacheControlKHR - Structure specifying parameter to disable the internal pipeline cache

Description

If the DeviceCreateInfo::pNext chain does not include this structure, then disableInternalCache defaults to FALSE.

Valid Usage

Valid Usage (Implicit)

See Also

VK_KHR_pipeline_binary, Bool32, StructureType

Constructors

DevicePipelineBinaryInternalCacheControlKHR 

Fields

  • disableInternalCache :: Bool

    disableInternalCache specifies whether or not to disable the implementation’s internal pipeline cache.

Instances

Instances details
Storable DevicePipelineBinaryInternalCacheControlKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_pipeline_binary

Show DevicePipelineBinaryInternalCacheControlKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_pipeline_binary

Eq DevicePipelineBinaryInternalCacheControlKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_pipeline_binary

FromCStruct DevicePipelineBinaryInternalCacheControlKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_pipeline_binary

ToCStruct DevicePipelineBinaryInternalCacheControlKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_pipeline_binary

Zero DevicePipelineBinaryInternalCacheControlKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_pipeline_binary

data PhysicalDevicePipelineBinaryPropertiesKHR Source #

VkPhysicalDevicePipelineBinaryPropertiesKHR - Structure describing properties about the pipeline binary implementation

Description

These properties tend to be platform specific and may change depending on external configuration which is outside the scope of this specification. These properties are intended to guide applications when implementations have dedicated caching solutions available. In particular, if the pipelineBinaryPrefersInternalCache limit is exposed, relying on the internal cache may provide some advantage compared to an application-specific solution. An application with its own dedicated solution may still use its own caching system even with this limit exposed.

If the PhysicalDevicePipelineBinaryPropertiesKHR structure is included in the pNext chain of the PhysicalDeviceProperties2 structure passed to getPhysicalDeviceProperties2, it is filled in with each corresponding implementation-dependent property.

Valid Usage (Implicit)

See Also

VK_KHR_pipeline_binary, Bool32, StructureType

Constructors

PhysicalDevicePipelineBinaryPropertiesKHR 

Fields

  • pipelineBinaryInternalCache :: Bool

    pipelineBinaryInternalCache specifies that the implementation maintains a pipeline cache internal to the implementation. If this is TRUE, applications can create pipeline binaries with only a pipeline create info, and in this case, an implementation may be able to create a pipeline binary directly without application needing to capture the binary itself.

  • pipelineBinaryInternalCacheControl :: Bool

    pipelineBinaryInternalCacheControl specifies whether the driver’s internal cache can be disabled. If this property is TRUE DevicePipelineBinaryInternalCacheControlKHR::disableInternalCache can be used to disable the driver’s internal cache, allowing an application to take full control of both memory and disk usage.

  • pipelineBinaryPrefersInternalCache :: Bool

    pipelineBinaryPrefersInternalCache specifies that the implementation prefers to maintain an internal cache, and applications should not store pipeline binaries in their own on-disk caches to avoid increased on-disk storage requirements. Applications are encouraged to only store pipeline keys instead, and aim to create pipeline binaries from key alone on subsequent runs of the application.

  • pipelineBinaryPrecompiledInternalCache :: Bool

    pipelineBinaryPrecompiledInternalCache specifies that the implementation may have pipeline binaries in its internal cache, which is populated without the application ever having generated that pipeline itself. Applications can attempt to create binaries without extracting pipeline binary data from the pipeline prior for a set of pipeline keys, including from previous runs of the application.

  • pipelineBinaryCompressedData :: Bool

    pipelineBinaryCompressedData specifies that the binary data is already compressed and so applications should not attempt to compress it.

Instances

Instances details
Storable PhysicalDevicePipelineBinaryPropertiesKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_pipeline_binary

Show PhysicalDevicePipelineBinaryPropertiesKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_pipeline_binary

Eq PhysicalDevicePipelineBinaryPropertiesKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_pipeline_binary

FromCStruct PhysicalDevicePipelineBinaryPropertiesKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_pipeline_binary

ToCStruct PhysicalDevicePipelineBinaryPropertiesKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_pipeline_binary

Zero PhysicalDevicePipelineBinaryPropertiesKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_pipeline_binary

type KHR_PIPELINE_BINARY_EXTENSION_NAME = "VK_KHR_pipeline_binary" Source #

pattern KHR_PIPELINE_BINARY_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a Source #

newtype PipelineBinaryKHR Source #

Instances

Instances details
Storable PipelineBinaryKHR Source # 
Instance details

Defined in Vulkan.Extensions.Handles

Show PipelineBinaryKHR Source # 
Instance details

Defined in Vulkan.Extensions.Handles

Eq PipelineBinaryKHR Source # 
Instance details

Defined in Vulkan.Extensions.Handles

Ord PipelineBinaryKHR Source # 
Instance details

Defined in Vulkan.Extensions.Handles

HasObjectType PipelineBinaryKHR Source # 
Instance details

Defined in Vulkan.Extensions.Handles

IsHandle PipelineBinaryKHR Source # 
Instance details

Defined in Vulkan.Extensions.Handles

Zero PipelineBinaryKHR Source # 
Instance details

Defined in Vulkan.Extensions.Handles

newtype PipelineCreateFlagBits2KHR Source #

VkPipelineCreateFlagBits2KHR - Bitmask controlling how a pipeline is created

Description

It is valid to set both PIPELINE_CREATE_2_ALLOW_DERIVATIVES_BIT_KHR and PIPELINE_CREATE_2_DERIVATIVE_BIT_KHR. This allows a pipeline to be both a parent and possibly a child in a pipeline hierarchy. See Pipeline Derivatives for more information.

When an implementation is looking up a pipeline in a pipeline cache, if that pipeline is being created using linked libraries, implementations should always return an equivalent pipeline created with PIPELINE_CREATE_2_LINK_TIME_OPTIMIZATION_BIT_EXT if available, whether or not that bit was specified.

Using PIPELINE_CREATE_2_LINK_TIME_OPTIMIZATION_BIT_EXT (or not) when linking pipeline libraries is intended as a performance tradeoff between host and device. If the bit is omitted, linking should be faster and produce a pipeline more rapidly, but performance of the pipeline on the target device may be reduced. If the bit is included, linking may be slower but should produce a pipeline with device performance comparable to a monolithically created pipeline. Using both options can allow latency-sensitive applications to generate a suboptimal but usable pipeline quickly, and then perform an optimal link in the background, substituting the result for the suboptimally linked pipeline as soon as it is available.

See Also

VK_KHR_maintenance5, PipelineCreateFlags2KHR

Bundled Patterns

pattern PIPELINE_CREATE_2_DISABLE_OPTIMIZATION_BIT_KHR :: PipelineCreateFlagBits2KHR 
pattern PIPELINE_CREATE_2_ALLOW_DERIVATIVES_BIT_KHR :: PipelineCreateFlagBits2KHR 
pattern PIPELINE_CREATE_2_DERIVATIVE_BIT_KHR :: PipelineCreateFlagBits2KHR 
pattern PIPELINE_CREATE_2_INDIRECT_BINDABLE_BIT_EXT :: PipelineCreateFlagBits2KHR 
pattern PIPELINE_CREATE_2_CAPTURE_DATA_BIT_KHR :: PipelineCreateFlagBits2KHR 
pattern PIPELINE_CREATE_2_DESCRIPTOR_BUFFER_BIT_EXT :: PipelineCreateFlagBits2KHR 
pattern PIPELINE_CREATE_2_RAY_TRACING_DISPLACEMENT_MICROMAP_BIT_NV :: PipelineCreateFlagBits2KHR 
pattern PIPELINE_CREATE_2_PROTECTED_ACCESS_ONLY_BIT_EXT :: PipelineCreateFlagBits2KHR 
pattern PIPELINE_CREATE_2_NO_PROTECTED_ACCESS_BIT_EXT :: PipelineCreateFlagBits2KHR 
pattern PIPELINE_CREATE_2_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT :: PipelineCreateFlagBits2KHR 
pattern PIPELINE_CREATE_2_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT :: PipelineCreateFlagBits2KHR 
pattern PIPELINE_CREATE_2_RAY_TRACING_OPACITY_MICROMAP_BIT_EXT :: PipelineCreateFlagBits2KHR 
pattern PIPELINE_CREATE_2_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT :: PipelineCreateFlagBits2KHR 
pattern PIPELINE_CREATE_2_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR :: PipelineCreateFlagBits2KHR 
pattern PIPELINE_CREATE_2_RAY_TRACING_ALLOW_MOTION_BIT_NV :: PipelineCreateFlagBits2KHR 
pattern PIPELINE_CREATE_2_INDIRECT_BINDABLE_BIT_NV :: PipelineCreateFlagBits2KHR 
pattern PIPELINE_CREATE_2_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR :: PipelineCreateFlagBits2KHR 
pattern PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR :: PipelineCreateFlagBits2KHR 
pattern PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR :: PipelineCreateFlagBits2KHR 
pattern PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR :: PipelineCreateFlagBits2KHR 
pattern PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR :: PipelineCreateFlagBits2KHR 
pattern PIPELINE_CREATE_2_RAY_TRACING_SKIP_AABBS_BIT_KHR :: PipelineCreateFlagBits2KHR 
pattern PIPELINE_CREATE_2_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR :: PipelineCreateFlagBits2KHR 
pattern PIPELINE_CREATE_2_LIBRARY_BIT_KHR :: PipelineCreateFlagBits2KHR 
pattern PIPELINE_CREATE_2_RETAIN_LINK_TIME_OPTIMIZATION_INFO_BIT_EXT :: PipelineCreateFlagBits2KHR 
pattern PIPELINE_CREATE_2_LINK_TIME_OPTIMIZATION_BIT_EXT :: PipelineCreateFlagBits2KHR 
pattern PIPELINE_CREATE_2_EARLY_RETURN_ON_FAILURE_BIT_KHR :: PipelineCreateFlagBits2KHR 
pattern PIPELINE_CREATE_2_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_KHR :: PipelineCreateFlagBits2KHR 
pattern PIPELINE_CREATE_2_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR :: PipelineCreateFlagBits2KHR 
pattern PIPELINE_CREATE_2_CAPTURE_STATISTICS_BIT_KHR :: PipelineCreateFlagBits2KHR 
pattern PIPELINE_CREATE_2_DEFER_COMPILE_BIT_NV :: PipelineCreateFlagBits2KHR 
pattern PIPELINE_CREATE_2_DISPATCH_BASE_BIT_KHR :: PipelineCreateFlagBits2KHR 
pattern PIPELINE_CREATE_2_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR :: PipelineCreateFlagBits2KHR 
pattern PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT :: PipelineCreateFlagBits2KHR 
pattern PIPELINE_CREATE_2_EXECUTION_GRAPH_BIT_AMDX :: PipelineCreateFlagBits2KHR 

Instances

Instances details
Storable PipelineCreateFlagBits2KHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_maintenance5

Bits PipelineCreateFlagBits2KHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_maintenance5

Methods

(.&.) :: PipelineCreateFlagBits2KHR -> PipelineCreateFlagBits2KHR -> PipelineCreateFlagBits2KHR #

(.|.) :: PipelineCreateFlagBits2KHR -> PipelineCreateFlagBits2KHR -> PipelineCreateFlagBits2KHR #

xor :: PipelineCreateFlagBits2KHR -> PipelineCreateFlagBits2KHR -> PipelineCreateFlagBits2KHR #

complement :: PipelineCreateFlagBits2KHR -> PipelineCreateFlagBits2KHR #

shift :: PipelineCreateFlagBits2KHR -> Int -> PipelineCreateFlagBits2KHR #

rotate :: PipelineCreateFlagBits2KHR -> Int -> PipelineCreateFlagBits2KHR #

zeroBits :: PipelineCreateFlagBits2KHR #

bit :: Int -> PipelineCreateFlagBits2KHR #

setBit :: PipelineCreateFlagBits2KHR -> Int -> PipelineCreateFlagBits2KHR #

clearBit :: PipelineCreateFlagBits2KHR -> Int -> PipelineCreateFlagBits2KHR #

complementBit :: PipelineCreateFlagBits2KHR -> Int -> PipelineCreateFlagBits2KHR #

testBit :: PipelineCreateFlagBits2KHR -> Int -> Bool #

bitSizeMaybe :: PipelineCreateFlagBits2KHR -> Maybe Int #

bitSize :: PipelineCreateFlagBits2KHR -> Int #

isSigned :: PipelineCreateFlagBits2KHR -> Bool #

shiftL :: PipelineCreateFlagBits2KHR -> Int -> PipelineCreateFlagBits2KHR #

unsafeShiftL :: PipelineCreateFlagBits2KHR -> Int -> PipelineCreateFlagBits2KHR #

shiftR :: PipelineCreateFlagBits2KHR -> Int -> PipelineCreateFlagBits2KHR #

unsafeShiftR :: PipelineCreateFlagBits2KHR -> Int -> PipelineCreateFlagBits2KHR #

rotateL :: PipelineCreateFlagBits2KHR -> Int -> PipelineCreateFlagBits2KHR #

rotateR :: PipelineCreateFlagBits2KHR -> Int -> PipelineCreateFlagBits2KHR #

popCount :: PipelineCreateFlagBits2KHR -> Int #

FiniteBits PipelineCreateFlagBits2KHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_maintenance5

Read PipelineCreateFlagBits2KHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_maintenance5

Show PipelineCreateFlagBits2KHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_maintenance5

Eq PipelineCreateFlagBits2KHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_maintenance5

Ord PipelineCreateFlagBits2KHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_maintenance5

Zero PipelineCreateFlagBits2KHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_maintenance5

pattern MAX_PIPELINE_BINARY_KEY_SIZE_KHR :: forall a. Integral a => a Source #

VK_MAX_PIPELINE_BINARY_KEY_SIZE_KHR - Maximum length of binary key

See Also

VK_KHR_pipeline_binary