| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Vulkan.Core10.PipelineCache
Synopsis
- createPipelineCache :: MonadIO io => Device -> PipelineCacheCreateInfo -> ("allocator" ::: Maybe AllocationCallbacks) -> io PipelineCache
- withPipelineCache :: MonadIO io => Device -> PipelineCacheCreateInfo -> Maybe AllocationCallbacks -> (io PipelineCache -> (PipelineCache -> io ()) -> r) -> r
- destroyPipelineCache :: MonadIO io => Device -> PipelineCache -> ("allocator" ::: Maybe AllocationCallbacks) -> io ()
- getPipelineCacheData :: MonadIO io => Device -> PipelineCache -> io (Result, "data" ::: ByteString)
- mergePipelineCaches :: MonadIO io => Device -> ("dstCache" ::: PipelineCache) -> ("srcCaches" ::: Vector PipelineCache) -> io ()
- data PipelineCacheCreateInfo = PipelineCacheCreateInfo {}
- newtype PipelineCache = PipelineCache Word64
- newtype PipelineCacheCreateFlagBits where
- PipelineCacheCreateFlagBits Flags
- pattern PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT :: PipelineCacheCreateFlagBits
- pattern PIPELINE_CACHE_CREATE_INTERNALLY_SYNCHRONIZED_MERGE_BIT_KHR :: PipelineCacheCreateFlagBits
- pattern PIPELINE_CACHE_CREATE_READ_ONLY_BIT :: PipelineCacheCreateFlagBits
- pattern PIPELINE_CACHE_CREATE_USE_APPLICATION_STORAGE_BIT :: PipelineCacheCreateFlagBits
- type PipelineCacheCreateFlags = PipelineCacheCreateFlagBits
Documentation
Arguments
| :: MonadIO io | |
| => Device |
|
| -> PipelineCacheCreateInfo |
|
| -> ("allocator" ::: Maybe AllocationCallbacks) |
|
| -> io PipelineCache |
vkCreatePipelineCache - Creates a new pipeline cache
Description
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
getPipelineCacheData. 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
createGraphicsPipelines
createRayTracingPipelinesKHR,
createRayTracingPipelinesNV,
createDataGraphPipelinesARM, and
createComputePipelines commands. If the
pipeline cache passed into these commands is not
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
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)
-
devicemust be a validDevicehandle
-
pCreateInfomust be a valid pointer to a validPipelineCacheCreateInfostructure - If
pAllocatoris notNULL,pAllocatormust be a valid pointer to a validAllocationCallbacksstructure -
pPipelineCachemust be a valid pointer to aPipelineCachehandle
Return Codes
See Also
VK_VERSION_1_0,
AllocationCallbacks,
Device, PipelineCache,
PipelineCacheCreateInfo
withPipelineCache :: MonadIO io => Device -> PipelineCacheCreateInfo -> Maybe AllocationCallbacks -> (io PipelineCache -> (PipelineCache -> io ()) -> r) -> r Source #
A convenience wrapper to make a compatible pair of calls to
createPipelineCache and destroyPipelineCache
To ensure that destroyPipelineCache is always called: pass
bracket (or the allocate function from your
favourite resource management library) as the last argument.
To just extract the pair pass (,) as the last argument.
Arguments
| :: MonadIO io | |
| => Device |
|
| -> PipelineCache |
|
| -> ("allocator" ::: Maybe AllocationCallbacks) |
|
| -> io () |
vkDestroyPipelineCache - Destroy a pipeline cache object
Valid Usage
- If
AllocationCallbackswere provided whenpipelineCachewas created, a compatible set of callbacks must be provided here
- If no
AllocationCallbackswere provided whenpipelineCachewas created,pAllocatormust beNULL
Valid Usage (Implicit)
-
devicemust be a validDevicehandle
- If
pipelineCacheis notNULL_HANDLE,pipelineCachemust be a validPipelineCachehandle - If
pAllocatoris notNULL,pAllocatormust be a valid pointer to a validAllocationCallbacksstructure - If
pipelineCacheis a valid handle, it must have been created, allocated, or retrieved fromdevice
Host Synchronization
- Host access to
pipelineCachemust be externally synchronized
See Also
Arguments
| :: MonadIO io | |
| => Device |
|
| -> PipelineCache |
|
| -> io (Result, "data" ::: ByteString) |
vkGetPipelineCacheData - Get the data store from a pipeline cache
Description
If pData is NULL, then the maximum size of the data that can be
retrieved from the pipeline cache, in bytes, is returned in pDataSize.
Otherwise, pDataSize must point to a variable set by the application
to the size of the buffer, in bytes, pointed to by pData, and on
return the variable is overwritten with the amount of data actually
written to pData. If pDataSize is less than the maximum size that
can be retrieved by the pipeline cache, at most pDataSize bytes will
be written to pData, and INCOMPLETE will
be returned instead of SUCCESS, to indicate
that not all of the pipeline cache was returned.
Any data written to pData is valid and can be provided as the
pInitialData member of the PipelineCacheCreateInfo structure passed
to createPipelineCache.
Two calls to getPipelineCacheData with the same parameters must
retrieve the same data unless a command that modifies the contents of
the cache is called between them.
The initial bytes written to pData must be a header as described in
the
Pipeline Cache Header
section.
If pDataSize is less than what is necessary to store this header,
nothing will be written to pData and zero will be written to
pDataSize.
This query does not behave consistently with the behavior described in Opaque Binary Data Results, for historical reasons.
If the amount of data available is larger than the passed pDataSize,
the query returns up to the size of the passed buffer, and signals
overflow with a INCOMPLETE success status
instead of returning a
ERROR_NOT_ENOUGH_SPACE_KHR error status.
Valid Usage
-
pipelineCachemust not have been created with theheaderVersionmember ofPipelineCacheCreateInfo::pInitialDataequal toPIPELINE_CACHE_HEADER_VERSION_DATA_GRAPH_QCOM
Valid Usage (Implicit)
-
devicemust be a validDevicehandle
-
pipelineCachemust be a validPipelineCachehandle -
pDataSizemust be a valid pointer to asize_tvalue - If the value
referenced by
pDataSizeis not0, andpDatais notNULL,pDatamust be a valid pointer to an array ofpDataSizebytes -
pipelineCachemust have been created, allocated, or retrieved fromdevice
Return Codes
See Also
Arguments
| :: MonadIO io | |
| => Device |
|
| -> ("dstCache" ::: PipelineCache) |
|
| -> ("srcCaches" ::: Vector PipelineCache) |
|
| -> io () |
vkMergePipelineCaches - Combine the data stores of pipeline caches
Description
The details of the merge operation are implementation-dependent, but implementations should merge the contents of the specified pipelines and prune duplicate entries.
Valid Usage
- Host access to
dstCachemust be externally synchronized if it was not created withPIPELINE_CACHE_CREATE_INTERNALLY_SYNCHRONIZED_MERGE_BIT_KHR -
dstCachemust not have been created with theheaderVersionmember ofPipelineCacheCreateInfo::pInitialDataequal toPIPELINE_CACHE_HEADER_VERSION_DATA_GRAPH_QCOM - Each member of
pSrcCaches must not have been created with the
headerVersionmember ofPipelineCacheCreateInfo::pInitialDataequal toPIPELINE_CACHE_HEADER_VERSION_DATA_GRAPH_QCOM
Valid Usage (Implicit)
-
devicemust be a validDevicehandle
-
dstCachemust be a validPipelineCachehandle -
pSrcCachesmust be a valid pointer to an array ofsrcCacheCountvalidPipelineCachehandles -
srcCacheCountmust be greater than0 -
dstCachemust have been created, allocated, or retrieved fromdevice - Each element of
pSrcCachesmust have been created, allocated, or retrieved fromdevice
Return Codes
See Also
data PipelineCacheCreateInfo Source #
VkPipelineCacheCreateInfo - Structure specifying parameters of a newly created pipeline cache
Members
sTypeis aStructureTypevalue identifying this structure.
pNextisNULLor a pointer to a structure extending this structure.flagsis a bitmask ofPipelineCacheCreateFlagBitsspecifying the behavior of the pipeline cache.initialDataSizeis the number of bytes inpInitialData. IfinitialDataSizeis zero, the pipeline cache will initially be empty.pInitialDatais a pointer to previously retrieved pipeline cache data. If the pipeline cache data is incompatible (as defined below) with the device, the pipeline cache will be initially empty. IfinitialDataSizeis zero,pInitialDatais ignored.
Valid Usage
- If
initialDataSizeis not0, it must be equal to the size ofpInitialData, as returned bygetPipelineCacheDatawhenpInitialDatawas originally retrieved
- If
initialDataSizeis not0,pInitialDatamust have been retrieved from a previous call togetPipelineCacheData -
If the
pipelineCreationCacheControl
feature is not enabled,
flagsmust not includePIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT - If the
maintenance8
feature is not enabled,
flagsmust not includePIPELINE_CACHE_CREATE_INTERNALLY_SYNCHRONIZED_MERGE_BIT_KHR - If
flagsincludesPIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT, it must not includePIPELINE_CACHE_CREATE_INTERNALLY_SYNCHRONIZED_MERGE_BIT_KHR
Valid Usage (Implicit)
-
sTypemust beSTRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO
-
pNextmust beNULL -
flagsmust be a valid combination ofPipelineCacheCreateFlagBitsvalues - If
initialDataSizeis not0,pInitialDatamust be a valid pointer to an array ofinitialDataSizebytes
See Also
VK_VERSION_1_0,
PipelineCacheCreateFlags,
StructureType, createPipelineCache
Constructors
| PipelineCacheCreateInfo | |
Fields
| |
Instances
newtype PipelineCache Source #
VkPipelineCache - Opaque handle to a pipeline cache object
See Also
VK_DEFINE_NON_DISPATCHABLE_HANDLE,
VK_VERSION_1_0,
createComputePipelines,
createDataGraphPipelinesARM,
createExecutionGraphPipelinesAMDX,
createGraphicsPipelines,
createPipelineCache,
createRayTracingPipelinesKHR,
createRayTracingPipelinesNV,
destroyPipelineCache,
getPipelineCacheData,
mergePipelineCaches
Constructors
| PipelineCache Word64 |
Instances
newtype PipelineCacheCreateFlagBits Source #
VkPipelineCacheCreateFlagBits - Bitmask specifying the behavior of the pipeline cache
Description
PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BITspecifies that all commands that modify the createdPipelineCachewill be externally synchronized. When set, the implementation may skip any unnecessary processing needed to support simultaneous modification from multiple threads where allowed.
PIPELINE_CACHE_CREATE_INTERNALLY_SYNCHRONIZED_MERGE_BIT_KHRspecifies that when the createdPipelineCacheis used as thedstCacheparameter ofmergePipelineCaches, it does not need to be externally synchronized. This flag is mutually exclusive withPIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT.
See Also
VK_EXT_pipeline_creation_cache_control,
VK_KHR_maintenance8,
VK_VERSION_1_3,
PipelineCacheCreateFlags
Constructors
| PipelineCacheCreateFlagBits Flags |
Bundled Patterns