| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Vulkan.Extensions.VK_EXT_validation_cache
Synopsis
- createValidationCacheEXT :: forall io. MonadIO io => Device -> ValidationCacheCreateInfoEXT -> ("allocator" ::: Maybe AllocationCallbacks) -> io ValidationCacheEXT
- withValidationCacheEXT :: forall io r. MonadIO io => Device -> ValidationCacheCreateInfoEXT -> Maybe AllocationCallbacks -> (io ValidationCacheEXT -> (ValidationCacheEXT -> io ()) -> r) -> r
- destroyValidationCacheEXT :: forall io. MonadIO io => Device -> ValidationCacheEXT -> ("allocator" ::: Maybe AllocationCallbacks) -> io ()
- getValidationCacheDataEXT :: forall io. MonadIO io => Device -> ValidationCacheEXT -> io (Result, "data" ::: ByteString)
- mergeValidationCachesEXT :: forall io. MonadIO io => Device -> ("dstCache" ::: ValidationCacheEXT) -> ("srcCaches" ::: Vector ValidationCacheEXT) -> io ()
- data ValidationCacheCreateInfoEXT = ValidationCacheCreateInfoEXT {}
- data ShaderModuleValidationCacheCreateInfoEXT = ShaderModuleValidationCacheCreateInfoEXT {}
- newtype ValidationCacheCreateFlagsEXT = ValidationCacheCreateFlagsEXT Flags
- newtype ValidationCacheHeaderVersionEXT where
- type EXT_VALIDATION_CACHE_SPEC_VERSION = 1
- pattern EXT_VALIDATION_CACHE_SPEC_VERSION :: forall a. Integral a => a
- type EXT_VALIDATION_CACHE_EXTENSION_NAME = "VK_EXT_validation_cache"
- pattern EXT_VALIDATION_CACHE_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a
- newtype ValidationCacheEXT = ValidationCacheEXT Word64
Documentation
createValidationCacheEXT Source #
Arguments
| :: forall io. MonadIO io | |
| => Device |
|
| -> ValidationCacheCreateInfoEXT |
|
| -> ("allocator" ::: Maybe AllocationCallbacks) |
|
| -> io ValidationCacheEXT |
vkCreateValidationCacheEXT - Creates a new validation cache
Description
Note
Applications can track and manage the total host memory size of a
validation cache object using the pAllocator. Applications can limit
the amount of data retrieved from a validation cache object in
getValidationCacheDataEXT. Implementations should not internally
limit the total number of entries added to a validation cache object or
the total host memory consumed.
Once created, a validation cache can be passed to the
createShaderModule command by adding this object
to the ShaderModuleCreateInfo structure’s pNext
chain. If a ShaderModuleValidationCacheCreateInfoEXT object is
included in the ShaderModuleCreateInfo::pNext
chain, and its validationCache field is not
NULL_HANDLE, the implementation will query
it for possible reuse opportunities and update it with new content. The
use of the validation cache object in these commands is internally
synchronized, and the same validation cache object can be used in
multiple threads simultaneously.
Note
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
createShaderModule command.
Valid Usage (Implicit)
devicemust be a validDevicehandle
pCreateInfomust be a valid pointer to a validValidationCacheCreateInfoEXTstructure- If
pAllocatoris notNULL,pAllocatormust be a valid pointer to a validAllocationCallbacksstructure pValidationCachemust be a valid pointer to aValidationCacheEXThandle
Return Codes
See Also
AllocationCallbacks,
Device, ValidationCacheCreateInfoEXT,
ValidationCacheEXT
withValidationCacheEXT :: forall io r. MonadIO io => Device -> ValidationCacheCreateInfoEXT -> Maybe AllocationCallbacks -> (io ValidationCacheEXT -> (ValidationCacheEXT -> io ()) -> r) -> r Source #
A convenience wrapper to make a compatible pair of calls to
createValidationCacheEXT and destroyValidationCacheEXT
To ensure that destroyValidationCacheEXT is always called: pass
bracket (or the allocate function from your
favourite resource management library) as the first argument.
To just extract the pair pass (,) as the first argument.
destroyValidationCacheEXT Source #
Arguments
| :: forall io. MonadIO io | |
| => Device |
|
| -> ValidationCacheEXT |
|
| -> ("allocator" ::: Maybe AllocationCallbacks) |
|
| -> io () |
vkDestroyValidationCacheEXT - Destroy a validation cache object
Valid Usage
- If
AllocationCallbackswere provided whenvalidationCachewas created, a compatible set of callbacks must be provided here
- If no
AllocationCallbackswere provided whenvalidationCachewas created,pAllocatormust beNULL
Valid Usage (Implicit)
devicemust be a validDevicehandle
- If
validationCacheis notNULL_HANDLE,validationCachemust be a validValidationCacheEXThandle - If
pAllocatoris notNULL,pAllocatormust be a valid pointer to a validAllocationCallbacksstructure - If
validationCacheis a valid handle, it must have been created, allocated, or retrieved fromdevice
Host Synchronization
- Host access to
validationCachemust be externally synchronized
See Also
getValidationCacheDataEXT Source #
Arguments
| :: forall io. MonadIO io | |
| => Device |
|
| -> ValidationCacheEXT |
|
| -> io (Result, "data" ::: ByteString) |
vkGetValidationCacheDataEXT - Get the data store from a validation cache
Description
If pData is NULL, then the maximum size of the data that can be
retrieved from the validation cache, in bytes, is returned in
pDataSize. Otherwise, pDataSize must point to a variable set by
the user 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 validation cache, at most pDataSize bytes will be written to
pData, and getValidationCacheDataEXT will return
INCOMPLETE. Any data written to pData is
valid and can be provided as the pInitialData member of the
ValidationCacheCreateInfoEXT structure passed to
createValidationCacheEXT.
Two calls to getValidationCacheDataEXT with the same parameters must
retrieve the same data unless a command that modifies the contents of
the cache is called between them.
Applications can store the data retrieved from the validation cache,
and use these data, possibly in a future run of the application, to
populate new validation cache objects. The results of validation,
however, may depend on the vendor ID, device ID, driver version, and
other details of the device. To enable applications to detect when
previously retrieved data is incompatible with the device, the initial
bytes written to pData must be a header consisting of the following
members:
| Offset | Size | Meaning |
|---|---|---|
| 0 | 4 | length in bytes of the entire validation cache header written as a stream of bytes, with the least significant byte first |
| 4 | 4 | a ValidationCacheHeaderVersionEXT value
written as a stream of bytes, with the least
significant byte first |
| 8 | UUID_SIZE
| a layer commit ID expressed as a UUID, which uniquely identifies the version of the validation layers used to generate these validation results |
Layout for validation cache header version
VALIDATION_CACHE_HEADER_VERSION_ONE_EXT
The first four bytes encode the length of the entire validation cache header, in bytes. This value includes all fields in the header including the validation cache version field and the size of the length field.
The next four bytes encode the validation cache version, as described
for ValidationCacheHeaderVersionEXT. A consumer of the validation
cache should use the cache version to interpret the remainder of the
cache header.
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.
Valid Usage (Implicit)
devicemust be a validDevicehandle
validationCachemust be a validValidationCacheEXThandlepDataSizemust 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 validationCachemust have been created, allocated, or retrieved fromdevice
Return Codes
See Also
mergeValidationCachesEXT Source #
Arguments
| :: forall io. MonadIO io | |
| => Device |
|
| -> ("dstCache" ::: ValidationCacheEXT) |
|
| -> ("srcCaches" ::: Vector ValidationCacheEXT) |
|
| -> io () |
vkMergeValidationCachesEXT - Combine the data stores of validation caches
Description
Note
The details of the merge operation are implementation dependent, but implementations should merge the contents of the specified validation caches and prune duplicate entries.
Valid Usage
dstCachemust not appear in the list of source caches
Valid Usage (Implicit)
devicemust be a validDevicehandle
dstCachemust be a validValidationCacheEXThandlepSrcCachesmust be a valid pointer to an array ofsrcCacheCountvalidValidationCacheEXThandlessrcCacheCountmust be greater than0dstCachemust have been created, allocated, or retrieved fromdevice- Each element of
pSrcCachesmust have been created, allocated, or retrieved fromdevice
Host Synchronization
- Host access to
dstCachemust be externally synchronized
Return Codes
See Also
data ValidationCacheCreateInfoEXT Source #
VkValidationCacheCreateInfoEXT - Structure specifying parameters of a newly created validation cache
Valid Usage
- If
initialDataSizeis not0, it must be equal to the size ofpInitialData, as returned bygetValidationCacheDataEXTwhenpInitialDatawas originally retrieved
- If
initialDataSizeis not0,pInitialDatamust have been retrieved from a previous call togetValidationCacheDataEXT
Valid Usage (Implicit)
sTypemust beSTRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT
pNextmust beNULLflagsmust be0- If
initialDataSizeis not0,pInitialDatamust be a valid pointer to an array ofinitialDataSizebytes
See Also
StructureType,
ValidationCacheCreateFlagsEXT, createValidationCacheEXT
Constructors
| ValidationCacheCreateInfoEXT | |
Fields
| |
Instances
data ShaderModuleValidationCacheCreateInfoEXT Source #
VkShaderModuleValidationCacheCreateInfoEXT - Specify validation cache to use during shader module creation
Valid Usage (Implicit)
See Also
Constructors
| ShaderModuleValidationCacheCreateInfoEXT | |
Fields
| |
Instances
newtype ValidationCacheCreateFlagsEXT Source #
VkValidationCacheCreateFlagsEXT - Reserved for future use
Description
ValidationCacheCreateFlagsEXT is a bitmask type for setting a mask,
but is currently reserved for future use.
See Also
Constructors
| ValidationCacheCreateFlagsEXT Flags |
Instances
newtype ValidationCacheHeaderVersionEXT Source #
VkValidationCacheHeaderVersionEXT - Encode validation cache version
See Also
Constructors
| ValidationCacheHeaderVersionEXT Int32 |
Bundled Patterns
| pattern VALIDATION_CACHE_HEADER_VERSION_ONE_EXT :: ValidationCacheHeaderVersionEXT |
|
Instances
type EXT_VALIDATION_CACHE_SPEC_VERSION = 1 Source #
pattern EXT_VALIDATION_CACHE_SPEC_VERSION :: forall a. Integral a => a Source #
type EXT_VALIDATION_CACHE_EXTENSION_NAME = "VK_EXT_validation_cache" Source #
pattern EXT_VALIDATION_CACHE_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a Source #
newtype ValidationCacheEXT Source #
VkValidationCacheEXT - Opaque handle to a validation cache object
See Also
ShaderModuleValidationCacheCreateInfoEXT,
createValidationCacheEXT,
destroyValidationCacheEXT,
getValidationCacheDataEXT,
mergeValidationCachesEXT
Constructors
| ValidationCacheEXT Word64 |