| Safe Haskell | Safe-Inferred |
|---|---|
| Language | Haskell2010 |
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
PipelineBinaryDataInfoKHRPipelineBinaryDataKHRPipelineBinaryHandlesInfoKHRPipelineBinaryKeyKHRPipelineBinaryKeysAndDataKHRPipelineCreateInfoKHRReleaseCapturedPipelineDataInfoKHRExtending
DeviceCreateInfo:Extending
GraphicsPipelineCreateInfo,ComputePipelineCreateInfo,RayTracingPipelineCreateInfoKHR:Extending
PhysicalDeviceFeatures2,DeviceCreateInfo:Extending
PhysicalDeviceProperties2:
New Enum Constants
KHR_PIPELINE_BINARY_SPEC_VERSIONMAX_PIPELINE_BINARY_KEY_SIZE_KHRExtending
ObjectType:Extending
PipelineCreateFlagBits2KHR:Extending
Result:Extending
StructureType:STRUCTURE_TYPE_DEVICE_PIPELINE_BINARY_INTERNAL_CACHE_CONTROL_KHRSTRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_BINARY_FEATURES_KHRSTRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_BINARY_PROPERTIES_KHRSTRUCTURE_TYPE_PIPELINE_BINARY_CREATE_INFO_KHRSTRUCTURE_TYPE_PIPELINE_BINARY_DATA_INFO_KHRSTRUCTURE_TYPE_PIPELINE_BINARY_HANDLES_INFO_KHRSTRUCTURE_TYPE_PIPELINE_BINARY_INFO_KHRSTRUCTURE_TYPE_PIPELINE_BINARY_KEY_KHRSTRUCTURE_TYPE_PIPELINE_CREATE_INFO_KHRSTRUCTURE_TYPE_RELEASE_CAPTURED_PIPELINE_DATA_INFO_KHR
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
- createPipelineBinariesKHR :: forall io. MonadIO io => Device -> PipelineBinaryCreateInfoKHR -> ("allocator" ::: Maybe AllocationCallbacks) -> io (Result, "binaries" ::: PipelineBinaryHandlesInfoKHR)
- destroyPipelineBinaryKHR :: forall io. MonadIO io => Device -> PipelineBinaryKHR -> ("allocator" ::: Maybe AllocationCallbacks) -> io ()
- getPipelineKeyKHR :: forall io. MonadIO io => Device -> ("pipelineCreateInfo" ::: Maybe PipelineCreateInfoKHR) -> io ("pipelineKey" ::: PipelineBinaryKeyKHR)
- getPipelineBinaryDataKHR :: forall io. MonadIO io => Device -> PipelineBinaryDataInfoKHR -> io (PipelineBinaryKeyKHR, "pipelineBinaryData" ::: ByteString)
- releaseCapturedPipelineDataKHR :: forall io. MonadIO io => Device -> ReleaseCapturedPipelineDataInfoKHR -> ("allocator" ::: Maybe AllocationCallbacks) -> io ()
- data PipelineBinaryCreateInfoKHR = PipelineBinaryCreateInfoKHR {}
- data PipelineBinaryHandlesInfoKHR = PipelineBinaryHandlesInfoKHR {}
- data PipelineBinaryDataKHR = PipelineBinaryDataKHR {}
- data PipelineBinaryKeysAndDataKHR = PipelineBinaryKeysAndDataKHR {}
- data PipelineBinaryKeyKHR = PipelineBinaryKeyKHR {
- keySize :: Word32
- key :: ByteString
- data PipelineBinaryInfoKHR = PipelineBinaryInfoKHR {}
- data ReleaseCapturedPipelineDataInfoKHR = ReleaseCapturedPipelineDataInfoKHR {}
- data PipelineBinaryDataInfoKHR = PipelineBinaryDataInfoKHR {}
- data PipelineCreateInfoKHR = PipelineCreateInfoKHR {
- data PhysicalDevicePipelineBinaryFeaturesKHR = PhysicalDevicePipelineBinaryFeaturesKHR {}
- data DevicePipelineBinaryInternalCacheControlKHR = DevicePipelineBinaryInternalCacheControlKHR {}
- data PhysicalDevicePipelineBinaryPropertiesKHR = PhysicalDevicePipelineBinaryPropertiesKHR {}
- type KHR_PIPELINE_BINARY_SPEC_VERSION = 1
- pattern KHR_PIPELINE_BINARY_SPEC_VERSION :: forall a. Integral a => a
- type KHR_PIPELINE_BINARY_EXTENSION_NAME = "VK_KHR_pipeline_binary"
- pattern KHR_PIPELINE_BINARY_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a
- newtype PipelineBinaryKHR = PipelineBinaryKHR Word64
- newtype PipelineCreateFlagBits2KHR where
- PipelineCreateFlagBits2KHR Flags64
- 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
- type PipelineCreateFlags2KHR = PipelineCreateFlagBits2KHR
- type MAX_PIPELINE_BINARY_KEY_SIZE_KHR = 32
- pattern MAX_PIPELINE_BINARY_KEY_SIZE_KHR :: forall a. Integral a => a
Documentation
createPipelineBinariesKHR Source #
Arguments
| :: forall io. MonadIO io | |
| => Device |
|
| -> PipelineBinaryCreateInfoKHR |
|
| -> ("allocator" ::: Maybe AllocationCallbacks) |
|
| -> 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:
- The corresponding entry in the
pPipelineBinariesoutput array will be filled withNULL_HANDLE. - The
Resultreturned bycreatePipelineBinariesKHRwill contain the error value for the first entry in the output array inpBinariescontainingNULL_HANDLE.
Valid Usage (Implicit)
-
devicemust be a validDevicehandle
-
pCreateInfomust be a valid pointer to a validPipelineBinaryCreateInfoKHRstructure - If
pAllocatoris notNULL,pAllocatormust be a valid pointer to a validAllocationCallbacksstructure -
pBinariesmust be a valid pointer to aPipelineBinaryHandlesInfoKHRstructure
Return Codes
See Also
VK_KHR_pipeline_binary,
AllocationCallbacks,
Device, PipelineBinaryCreateInfoKHR,
PipelineBinaryHandlesInfoKHR
destroyPipelineBinaryKHR Source #
Arguments
| :: forall io. MonadIO io | |
| => Device |
|
| -> PipelineBinaryKHR |
|
| -> ("allocator" ::: Maybe AllocationCallbacks) |
|
| -> io () |
vkDestroyPipelineBinaryKHR - Destroy a pipeline binary
Valid Usage
- If
AllocationCallbackswere provided whenpipelineBinarywas created, a compatible set of callbacks must be provided here
- If no
AllocationCallbackswere provided whenpipelineBinarywas created,pAllocatormust beNULL
Valid Usage (Implicit)
-
devicemust be a validDevicehandle
- If
pipelineBinaryis notNULL_HANDLE,pipelineBinarymust be a validPipelineBinaryKHRhandle - If
pAllocatoris notNULL,pAllocatormust be a valid pointer to a validAllocationCallbacksstructure - If
pipelineBinaryis a valid handle, it must have been created, allocated, or retrieved fromdevice
Host Synchronization
- Host access to
pipelineBinarymust be externally synchronized
See Also
VK_KHR_pipeline_binary,
AllocationCallbacks,
Device,
PipelineBinaryKHR
Arguments
| :: forall io. MonadIO io | |
| => Device |
|
| -> ("pipelineCreateInfo" ::: Maybe PipelineCreateInfoKHR) |
|
| -> 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
pNextchain ofpPipelineCreateInfomust not setPipelineBinaryInfoKHR::binaryCountto a value greater than0
Valid Usage (Implicit)
-
devicemust be a validDevicehandle
- If
pPipelineCreateInfois notNULL,pPipelineCreateInfomust be a valid pointer to a validPipelineCreateInfoKHRstructure -
pPipelineKeymust be a valid pointer to aPipelineBinaryKeyKHRstructure
Return Codes
See Also
VK_KHR_pipeline_binary,
Device, PipelineBinaryKeyKHR,
PipelineCreateInfoKHR
getPipelineBinaryDataKHR Source #
Arguments
| :: forall io. MonadIO io | |
| => Device |
|
| -> PipelineBinaryDataInfoKHR |
|
| -> 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)
-
devicemust be a validDevicehandle
-
pInfomust be a valid pointer to a validPipelineBinaryDataInfoKHRstructure -
pPipelineBinaryKeymust be a valid pointer to aPipelineBinaryKeyKHRstructure -
pPipelineBinaryDataSizemust be a valid pointer to asize_tvalue - If
the value referenced by
pPipelineBinaryDataSizeis not0, andpPipelineBinaryDatais notNULL,pPipelineBinaryDatamust be a valid pointer to an array ofpPipelineBinaryDataSizebytes
Return Codes
See Also
VK_KHR_pipeline_binary,
Device, PipelineBinaryDataInfoKHR,
PipelineBinaryKeyKHR
releaseCapturedPipelineDataKHR Source #
Arguments
| :: forall io. MonadIO io | |
| => Device |
|
| -> ReleaseCapturedPipelineDataInfoKHR |
|
| -> ("allocator" ::: Maybe AllocationCallbacks) |
|
| -> 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
AllocationCallbackswere provided whenpipelinewas created, a compatible set of callbacks must be provided inpAllocator
- If no
AllocationCallbackswere provided whenpipelinewas created,pAllocatormust beNULL
Valid Usage (Implicit)
-
devicemust be a validDevicehandle
-
pInfomust be a valid pointer to a validReleaseCapturedPipelineDataInfoKHRstructure - If
pAllocatoris notNULL,pAllocatormust be a valid pointer to a validAllocationCallbacksstructure
Host Synchronization
- Host access to
pInfo->pipelinemust be externally synchronized
Return Codes
- 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
- If
pipelineis notNULL_HANDLE,pipelinemust have been created withPIPELINE_CREATE_2_CAPTURE_DATA_BIT_KHR
- If
pipelineis notNULL_HANDLE,releaseCapturedPipelineDataKHRmust not have been called onpipelineprior to this command -
If
pipelineBinaryInternalCache
is
FALSEpPipelineCreateInfo must beNULL - If
devicewas created withDevicePipelineBinaryInternalCacheControlKHR::disableInternalCacheset toTRUE,pPipelineCreateInfomust beNULL - One and
only one of
pKeysAndDataInfo,pipeline, orpPipelineCreateInfomust be non-NULL - If
pPipelineCreateInfois notNULL, thepNextchain ofpPipelineCreateInfomust not setPipelineBinaryInfoKHR::binaryCountto a value greater than0
Valid Usage (Implicit)
-
sTypemust beSTRUCTURE_TYPE_PIPELINE_BINARY_CREATE_INFO_KHR
-
pNextmust beNULL - If
pKeysAndDataInfois notNULL,pKeysAndDataInfomust be a valid pointer to a validPipelineBinaryKeysAndDataKHRstructure - If
pipelineis notNULL_HANDLE,pipelinemust be a validPipelinehandle -
If
pPipelineCreateInfois notNULL,pPipelineCreateInfomust be a valid pointer to a validPipelineCreateInfoKHRstructure
See Also
VK_KHR_pipeline_binary,
Pipeline, PipelineBinaryKeysAndDataKHR,
PipelineCreateInfoKHR,
StructureType,
createPipelineBinariesKHR
Constructors
| PipelineBinaryCreateInfoKHR | |
Fields
| |
Instances
| Show PipelineBinaryCreateInfoKHR Source # | |
Defined in Vulkan.Extensions.VK_KHR_pipeline_binary Methods showsPrec :: Int -> PipelineBinaryCreateInfoKHR -> ShowS # show :: PipelineBinaryCreateInfoKHR -> String # showList :: [PipelineBinaryCreateInfoKHR] -> ShowS # | |
| FromCStruct PipelineBinaryCreateInfoKHR Source # | |
Defined in Vulkan.Extensions.VK_KHR_pipeline_binary | |
| ToCStruct PipelineBinaryCreateInfoKHR Source # | |
Defined in Vulkan.Extensions.VK_KHR_pipeline_binary Methods withCStruct :: PipelineBinaryCreateInfoKHR -> (Ptr PipelineBinaryCreateInfoKHR -> IO b) -> IO b Source # pokeCStruct :: Ptr PipelineBinaryCreateInfoKHR -> PipelineBinaryCreateInfoKHR -> IO b -> IO b Source # withZeroCStruct :: (Ptr PipelineBinaryCreateInfoKHR -> IO b) -> IO b Source # pokeZeroCStruct :: Ptr PipelineBinaryCreateInfoKHR -> IO b -> IO b Source # cStructSize :: Int Source # | |
| Zero PipelineBinaryCreateInfoKHR Source # | |
Defined in Vulkan.Extensions.VK_KHR_pipeline_binary Methods | |
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)
-
sTypemust beSTRUCTURE_TYPE_PIPELINE_BINARY_HANDLES_INFO_KHR
-
pNextmust beNULL - If
pipelineBinaryCountis not0, andpPipelineBinariesis notNULL,pPipelineBinariesmust be a valid pointer to an array ofpipelineBinaryCountPipelineBinaryKHRhandles
See Also
VK_KHR_pipeline_binary,
PipelineBinaryKHR,
StructureType,
createPipelineBinariesKHR
Constructors
| PipelineBinaryHandlesInfoKHR | |
Fields
| |
Instances
data PipelineBinaryDataKHR Source #
VkPipelineBinaryDataKHR - Structure specifying data and length of a pipeline binary
Valid Usage (Implicit)
See Also
Constructors
| PipelineBinaryDataKHR | |
Fields
| |
Instances
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
| |
Instances
| Show PipelineBinaryKeysAndDataKHR Source # | |
Defined in Vulkan.Extensions.VK_KHR_pipeline_binary Methods showsPrec :: Int -> PipelineBinaryKeysAndDataKHR -> ShowS # show :: PipelineBinaryKeysAndDataKHR -> String # showList :: [PipelineBinaryKeysAndDataKHR] -> ShowS # | |
| FromCStruct PipelineBinaryKeysAndDataKHR Source # | |
Defined in Vulkan.Extensions.VK_KHR_pipeline_binary | |
| ToCStruct PipelineBinaryKeysAndDataKHR Source # | |
Defined in Vulkan.Extensions.VK_KHR_pipeline_binary Methods withCStruct :: PipelineBinaryKeysAndDataKHR -> (Ptr PipelineBinaryKeysAndDataKHR -> IO b) -> IO b Source # pokeCStruct :: Ptr PipelineBinaryKeysAndDataKHR -> PipelineBinaryKeysAndDataKHR -> IO b -> IO b Source # withZeroCStruct :: (Ptr PipelineBinaryKeysAndDataKHR -> IO b) -> IO b Source # pokeZeroCStruct :: Ptr PipelineBinaryKeysAndDataKHR -> IO b -> IO b Source # cStructSize :: Int Source # | |
| Zero PipelineBinaryKeysAndDataKHR Source # | |
Defined in Vulkan.Extensions.VK_KHR_pipeline_binary Methods | |
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
| |
Instances
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
binaryCountand the order of the elements inpPipelineBinariesmust exactly match that returned bycreatePipelineBinariesKHRfor the matchingVk*PipelineCreateInfostructure and itspNextchain, ignoring the presence of thePipelineBinaryInfoKHRstructure, the presence of thePIPELINE_CREATE_2_CAPTURE_DATA_BIT_KHRflag, and absence of any shader module identifiers or shader modules, for the same global pipeline key, from either:PipelineBinaryCreateInfoKHR::pPipelineCreateInfo, orPipelineBinaryCreateInfoKHR::pipeline
Valid Usage (Implicit)
-
sTypemust beSTRUCTURE_TYPE_PIPELINE_BINARY_INFO_KHR
- If
binaryCountis not0,pPipelineBinariesmust be a valid pointer to an array ofbinaryCountvalidPipelineBinaryKHRhandles
See Also
Constructors
| PipelineBinaryInfoKHR | |
Fields
| |
Instances
| Show PipelineBinaryInfoKHR Source # | |
Defined in Vulkan.Extensions.VK_KHR_pipeline_binary Methods showsPrec :: Int -> PipelineBinaryInfoKHR -> ShowS # show :: PipelineBinaryInfoKHR -> String # showList :: [PipelineBinaryInfoKHR] -> ShowS # | |
| FromCStruct PipelineBinaryInfoKHR Source # | |
Defined in Vulkan.Extensions.VK_KHR_pipeline_binary Methods peekCStruct :: Ptr PipelineBinaryInfoKHR -> IO PipelineBinaryInfoKHR Source # | |
| ToCStruct PipelineBinaryInfoKHR Source # | |
Defined in Vulkan.Extensions.VK_KHR_pipeline_binary Methods withCStruct :: PipelineBinaryInfoKHR -> (Ptr PipelineBinaryInfoKHR -> IO b) -> IO b Source # pokeCStruct :: Ptr PipelineBinaryInfoKHR -> PipelineBinaryInfoKHR -> IO b -> IO b Source # withZeroCStruct :: (Ptr PipelineBinaryInfoKHR -> IO b) -> IO b Source # pokeZeroCStruct :: Ptr PipelineBinaryInfoKHR -> IO b -> IO b Source # cStructSize :: Int Source # | |
| Zero PipelineBinaryInfoKHR Source # | |
Defined in Vulkan.Extensions.VK_KHR_pipeline_binary Methods | |
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
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
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
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
Constructors
| PhysicalDevicePipelineBinaryFeaturesKHR | |
Fields
| |
Instances
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
-
If
PhysicalDevicePipelineBinaryPropertiesKHR::pipelineBinaryInternalCacheControlisFALSE,disableInternalCachemust beFALSE
Valid Usage (Implicit)
See Also
Constructors
| DevicePipelineBinaryInternalCacheControlKHR | |
Fields
| |
Instances
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
Constructors
| PhysicalDevicePipelineBinaryPropertiesKHR | |
Fields
| |
Instances
type KHR_PIPELINE_BINARY_SPEC_VERSION = 1 Source #
pattern KHR_PIPELINE_BINARY_SPEC_VERSION :: forall a. Integral a => a Source #
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 #
VkPipelineBinaryKHR - Opaque handle to a pipeline binary object
See Also
VK_DEFINE_NON_DISPATCHABLE_HANDLE,
VK_KHR_pipeline_binary,
PipelineBinaryDataInfoKHR,
PipelineBinaryHandlesInfoKHR,
PipelineBinaryInfoKHR,
destroyPipelineBinaryKHR
Constructors
| PipelineBinaryKHR Word64 |
Instances
newtype PipelineCreateFlagBits2KHR Source #
VkPipelineCreateFlagBits2KHR - Bitmask controlling how a pipeline is created
Description
PIPELINE_CREATE_2_DISABLE_OPTIMIZATION_BIT_KHRspecifies that the created pipeline will not be optimized. Using this flag may reduce the time taken to create the pipeline.
PIPELINE_CREATE_2_ALLOW_DERIVATIVES_BIT_KHRspecifies that the pipeline to be created is allowed to be the parent of a pipeline that will be created in a subsequent pipeline creation call.PIPELINE_CREATE_2_DERIVATIVE_BIT_KHRspecifies that the pipeline to be created will be a child of a previously created parent pipeline.PIPELINE_CREATE_2_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHRspecifies that any shader input variables decorated asViewIndexwill be assigned values as if they were decorated asDeviceIndex.PIPELINE_CREATE_2_DISPATCH_BASE_BIT_KHRspecifies that a compute pipeline can be used withcmdDispatchBasewith a non-zero base workgroup.PIPELINE_CREATE_2_DEFER_COMPILE_BIT_NVspecifies that a pipeline is created with all shaders in the deferred state. Before using the pipeline the application must callcompileDeferredNVexactly once on each shader in the pipeline before using the pipeline.PIPELINE_CREATE_2_CAPTURE_STATISTICS_BIT_KHRspecifies that the shader compiler should capture statistics for the pipeline executables produced by the compile process which can later be retrieved by callinggetPipelineExecutableStatisticsKHR. Enabling this flag must not affect the final compiled pipeline but may disable pipeline caching or otherwise affect pipeline creation time.PIPELINE_CREATE_2_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHRspecifies that the shader compiler should capture the internal representations of pipeline executables produced by the compile process which can later be retrieved by callinggetPipelineExecutableInternalRepresentationsKHR. Enabling this flag must not affect the final compiled pipeline but may disable pipeline caching or otherwise affect pipeline creation time. When capturing IR from pipelines created with pipeline libraries, there is no guarantee that IR from libraries can be retrieved from the linked pipeline. Applications should retrieve IR from each library, and any linked pipelines, separately.PIPELINE_CREATE_2_LIBRARY_BIT_KHRspecifies that the pipeline cannot be used directly, and instead defines a pipeline library that can be combined with other pipelines using thePipelineLibraryCreateInfoKHRstructure. This is available in ray tracing and graphics pipelines.PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHRspecifies that an any-hit shader will always be present when an any-hit shader would be executed. A NULL any-hit shader is an any-hit shader which is effectivelySHADER_UNUSED_KHR, such as from a shader group consisting entirely of zeros.PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHRspecifies that a closest hit shader will always be present when a closest hit shader would be executed. A NULL closest hit shader is a closest hit shader which is effectivelySHADER_UNUSED_KHR, such as from a shader group consisting entirely of zeros.PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHRspecifies that a miss shader will always be present when a miss shader would be executed. A NULL miss shader is a miss shader which is effectivelySHADER_UNUSED_KHR, such as from a shader group consisting entirely of zeros.PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHRspecifies that an intersection shader will always be present when an intersection shader would be executed. A NULL intersection shader is an intersection shader which is effectivelySHADER_UNUSED_KHR, such as from a shader group consisting entirely of zeros.PIPELINE_CREATE_2_RAY_TRACING_SKIP_TRIANGLES_BIT_KHRspecifies that triangle primitives will be skipped during traversal using pipeline trace ray instructions.PIPELINE_CREATE_2_RAY_TRACING_SKIP_AABBS_BIT_KHRspecifies that AABB primitives will be skipped during traversal using pipeline trace ray instructions.PIPELINE_CREATE_2_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHRspecifies that the shader group handles can be saved and reused on a subsequent run (e.g. for trace capture and replay).PIPELINE_CREATE_2_INDIRECT_BINDABLE_BIT_NVspecifies that the pipeline can be used in combination with https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#device-generated-commands.PIPELINE_CREATE_2_INDIRECT_BINDABLE_BIT_EXTspecifies that the pipeline can be used in aIndirectExecutionSetEXT.PIPELINE_CREATE_2_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_KHRspecifies that pipeline creation will fail if a compile is required for creation of a validPipelineobject;PIPELINE_COMPILE_REQUIREDwill be returned by pipeline creation, and thePipelinewill beNULL_HANDLE.- When creating multiple pipelines,
PIPELINE_CREATE_2_EARLY_RETURN_ON_FAILURE_BIT_KHRspecifies that control will be returned to the application if any individual pipeline returns a result which is notSUCCESSrather than continuing to create additional pipelines. PIPELINE_CREATE_2_RAY_TRACING_ALLOW_MOTION_BIT_NVspecifies that the pipeline is allowed to useOpTraceRayMotionNV.PIPELINE_CREATE_2_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHRspecifies that the pipeline will be used with a fragment shading rate attachment.PIPELINE_CREATE_2_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXTspecifies that the pipeline will be used with a fragment density map attachment.PIPELINE_CREATE_2_LINK_TIME_OPTIMIZATION_BIT_EXTspecifies that pipeline libraries being linked into this library should have link time optimizations applied. If this bit is omitted, implementations should instead perform linking as rapidly as possible.PIPELINE_CREATE_2_RETAIN_LINK_TIME_OPTIMIZATION_INFO_BIT_EXTspecifies that pipeline libraries should retain any information necessary to later perform an optimal link withPIPELINE_CREATE_2_LINK_TIME_OPTIMIZATION_BIT_EXT.PIPELINE_CREATE_2_DESCRIPTOR_BUFFER_BIT_EXTspecifies that a pipeline will be used with descriptor buffers, rather than descriptor sets.PIPELINE_CREATE_2_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXTspecifies that the pipeline may be used with an attachment feedback loop including color attachments.PIPELINE_CREATE_2_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXTspecifies that the pipeline may be used with an attachment feedback loop including depth-stencil attachments.PIPELINE_CREATE_2_RAY_TRACING_OPACITY_MICROMAP_BIT_EXTspecifies that the ray tracing pipeline can be used with acceleration structures which reference an opacity micromap array.PIPELINE_CREATE_2_RAY_TRACING_DISPLACEMENT_MICROMAP_BIT_NVspecifies that the ray tracing pipeline can be used with acceleration structures which reference a displacement micromap array.PIPELINE_CREATE_2_NO_PROTECTED_ACCESS_BIT_EXTspecifies that the pipeline must not be bound to a protected command buffer.PIPELINE_CREATE_2_PROTECTED_ACCESS_ONLY_BIT_EXTspecifies that the pipeline must not be bound to an unprotected command buffer.PIPELINE_CREATE_2_CAPTURE_DATA_BIT_KHRspecifies thatPipelineBinaryKHRobjects can be created from the pipeline. IfPIPELINE_CREATE_2_CAPTURE_DATA_BIT_KHRis used, implementations should not store pipeline data to an internal cache, if such a cache exists as stated by pipelineBinaryInternalCache. If pipelineBinaryPrefersInternalCache isTRUE, applications should not usePIPELINE_CREATE_2_CAPTURE_DATA_BIT_KHR.PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXTspecifies that the pipeline will be used in a render pass that is begun withRENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT.PIPELINE_CREATE_2_EXECUTION_GRAPH_BIT_AMDXspecifies that the pipeline will be used in an execution graph
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
Constructors
| PipelineCreateFlagBits2KHR Flags64 |
Bundled Patterns
Instances
type MAX_PIPELINE_BINARY_KEY_SIZE_KHR = 32 Source #
pattern MAX_PIPELINE_BINARY_KEY_SIZE_KHR :: forall a. Integral a => a Source #