Safe Haskell | None |
---|---|
Language | Haskell2010 |
Synopsis
- newtype VkPeerMemoryFeatureFlagBits = VkPeerMemoryFeatureFlagBits VkFlags
- pattern VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT :: VkPeerMemoryFeatureFlagBits
- pattern VK_PEER_MEMORY_FEATURE_COPY_DST_BIT :: VkPeerMemoryFeatureFlagBits
- pattern VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT :: VkPeerMemoryFeatureFlagBits
- pattern VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT :: VkPeerMemoryFeatureFlagBits
- newtype VkMemoryAllocateFlagBits = VkMemoryAllocateFlagBits VkFlags
- pattern VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT :: VkMemoryAllocateFlagBits
- pattern VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO :: VkStructureType
- pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO :: VkStructureType
- pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO :: VkStructureType
- pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO :: VkStructureType
- pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO :: VkStructureType
- pattern VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT :: VkPipelineCreateFlagBits
- pattern VK_PIPELINE_CREATE_DISPATCH_BASE :: VkPipelineCreateFlagBits
- pattern VK_DEPENDENCY_DEVICE_GROUP_BIT :: VkDependencyFlagBits
- vkGetDeviceGroupPeerMemoryFeatures :: ("device" ::: VkDevice) -> ("heapIndex" ::: Word32) -> ("localDeviceIndex" ::: Word32) -> ("remoteDeviceIndex" ::: Word32) -> ("pPeerMemoryFeatures" ::: Ptr VkPeerMemoryFeatureFlags) -> IO ()
- vkCmdSetDeviceMask :: ("commandBuffer" ::: VkCommandBuffer) -> ("deviceMask" ::: Word32) -> IO ()
- vkCmdDispatchBase :: ("commandBuffer" ::: VkCommandBuffer) -> ("baseGroupX" ::: Word32) -> ("baseGroupY" ::: Word32) -> ("baseGroupZ" ::: Word32) -> ("groupCountX" ::: Word32) -> ("groupCountY" ::: Word32) -> ("groupCountZ" ::: Word32) -> IO ()
- data VkMemoryAllocateFlagsInfo = VkMemoryAllocateFlagsInfo {}
- data VkDeviceGroupRenderPassBeginInfo = VkDeviceGroupRenderPassBeginInfo {}
- data VkDeviceGroupCommandBufferBeginInfo = VkDeviceGroupCommandBufferBeginInfo {
- vkSType :: VkStructureType
- vkPNext :: Ptr ()
- vkDeviceMask :: Word32
- data VkDeviceGroupSubmitInfo = VkDeviceGroupSubmitInfo {}
- data VkDeviceGroupBindSparseInfo = VkDeviceGroupBindSparseInfo {}
- type VkPeerMemoryFeatureFlags = VkPeerMemoryFeatureFlagBits
- type VkMemoryAllocateFlags = VkMemoryAllocateFlagBits
Documentation
newtype VkPeerMemoryFeatureFlagBits Source #
VkPeerMemoryFeatureFlagBits - Bitmask specifying supported peer memory features
Description
VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT
specifies that the memory can be accessed as the source of avkCmdCopyBuffer
,vkCmdCopyImage
,vkCmdCopyBufferToImage
, orvkCmdCopyImageToBuffer
command.
VK_PEER_MEMORY_FEATURE_COPY_DST_BIT
specifies that the memory can be accessed as the destination of avkCmdCopyBuffer
,vkCmdCopyImage
,vkCmdCopyBufferToImage
, orvkCmdCopyImageToBuffer
command.VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT
specifies that the memory can be read as any memory access type.VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT
specifies that the memory can be written as any memory access type. Shader atomics are considered to be writes.
Note
The peer memory features of a memory heap also apply to any accesses that may be performed during image layout transitions.
VK_PEER_MEMORY_FEATURE_COPY_DST_BIT
must be supported for all host
local heaps and for at least one device local heap.
If a device does not support a peer memory feature, it is still valid to use a resource that includes both local and peer memory bindings with the corresponding access type as long as only the local bindings are actually accessed. For example, an application doing split-frame rendering would use framebuffer attachments that include both local and peer memory bindings, but would scissor the rendering to only update local memory.
See Also
Instances
newtype VkMemoryAllocateFlagBits Source #
VkMemoryAllocateFlagBits - Bitmask specifying flags for a device memory allocation
See Also
Instances
pattern VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT :: VkMemoryAllocateFlagBits Source #
VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT
specifies that memory will be
allocated for the devices in VkMemoryAllocateFlagsInfo
::deviceMask
.
pattern VK_DEPENDENCY_DEVICE_GROUP_BIT :: VkDependencyFlagBits Source #
VK_DEPENDENCY_DEVICE_GROUP_BIT
specifies that dependencies are
non-device-local
dependency.
vkGetDeviceGroupPeerMemoryFeatures :: ("device" ::: VkDevice) -> ("heapIndex" ::: Word32) -> ("localDeviceIndex" ::: Word32) -> ("remoteDeviceIndex" ::: Word32) -> ("pPeerMemoryFeatures" ::: Ptr VkPeerMemoryFeatureFlags) -> IO () Source #
vkGetDeviceGroupPeerMemoryFeatures - Query supported peer memory features of a device
Parameters
device
is the logical device that owns the memory.
heapIndex
is the index of the memory heap from which the memory is allocated.localDeviceIndex
is the device index of the physical device that performs the memory access.remoteDeviceIndex
is the device index of the physical device that the memory is allocated for.pPeerMemoryFeatures
is a pointer to a bitmask ofVkPeerMemoryFeatureFlagBits
indicating which types of memory accesses are supported for the combination of heap, local, and remote devices.
Valid Usage
heapIndex
must be less thanmemoryHeapCount
localDeviceIndex
must be a valid device indexremoteDeviceIndex
must be a valid device indexlocalDeviceIndex
must not equal remoteDeviceIndex
Valid Usage (Implicit)
device
must be a validVkDevice
handle
pPeerMemoryFeatures
must be a valid pointer to aVkPeerMemoryFeatureFlags
valuepPeerMemoryFeatures
must not be0
See Also
vkCmdSetDeviceMask :: ("commandBuffer" ::: VkCommandBuffer) -> ("deviceMask" ::: Word32) -> IO () Source #
vkCmdSetDeviceMask - Modify device mask of a command buffer
Parameters
commandBuffer
is command buffer whose current device mask is modified.
deviceMask
is the new value of the current device mask.
Description
deviceMask
is used to filter out subsequent commands from executing on
all physical devices whose bit indices are not set in the mask.
Valid Usage
deviceMask
must be a valid device mask value
deviceMask
must not be zerodeviceMask
must not include any set bits that were not in theVkDeviceGroupCommandBufferBeginInfo
::deviceMask
value when the command buffer began recording.- If
vkCmdSetDeviceMask
is called inside a render pass instance,deviceMask
must not include any set bits that were not in theVkDeviceGroupRenderPassBeginInfo
::deviceMask
value when the render pass instance began recording.
Valid Usage (Implicit)
commandBuffer
must be a validVkCommandBuffer
handle
commandBuffer
must be in the recording state- The
VkCommandPool
thatcommandBuffer
was allocated from must support graphics, compute, or transfer operations
Host Synchronization
- Host access to
commandBuffer
must be externally synchronized
- Host access to the
VkCommandPool
thatcommandBuffer
was allocated from must be externally synchronized
Command Properties
'
Command Buffer Levels | Render Pass Scope | Supported Queue Types | Pipeline Type |
---|---|---|---|
Primary Secondary | Both | Graphics Compute Transfer |
See Also
vkCmdDispatchBase :: ("commandBuffer" ::: VkCommandBuffer) -> ("baseGroupX" ::: Word32) -> ("baseGroupY" ::: Word32) -> ("baseGroupZ" ::: Word32) -> ("groupCountX" ::: Word32) -> ("groupCountY" ::: Word32) -> ("groupCountZ" ::: Word32) -> IO () Source #
vkCmdDispatchBase - Dispatch compute work items
Parameters
commandBuffer
is the command buffer into which the command will be recorded.
baseGroupX
is the start value for the X component ofWorkgroupId
.baseGroupY
is the start value for the Y component ofWorkgroupId
.baseGroupZ
is the start value for the Z component ofWorkgroupId
.groupCountX
is the number of local workgroups to dispatch in the X dimension.groupCountY
is the number of local workgroups to dispatch in the Y dimension.groupCountZ
is the number of local workgroups to dispatch in the Z dimension.
Description
When the command is executed, a global workgroup consisting of
groupCountX × groupCountY × groupCountZ local workgroups is assembled,
with WorkgroupId
values ranging from [baseGroup, baseGroup +
groupCount) in each component.
vkCmdDispatch
is
equivalent to
vkCmdDispatchBase(0,0,0,groupCountX,groupCountY,groupCountZ).
Valid Usage
- All valid usage rules from
vkCmdDispatch
apply
baseGroupX
must be less thanVkPhysicalDeviceLimits
::maxComputeWorkGroupCount
[0]baseGroupX
must be less thanVkPhysicalDeviceLimits
::maxComputeWorkGroupCount
[1]baseGroupZ
must be less thanVkPhysicalDeviceLimits
::maxComputeWorkGroupCount
[2]groupCountX
must be less than or equal toVkPhysicalDeviceLimits
::maxComputeWorkGroupCount
[0] minusbaseGroupX
groupCountY
must be less than or equal toVkPhysicalDeviceLimits
::maxComputeWorkGroupCount
[1] minusbaseGroupY
groupCountZ
must be less than or equal toVkPhysicalDeviceLimits
::maxComputeWorkGroupCount
[2] minusbaseGroupZ
- If any of
baseGroupX
,baseGroupY
, orbaseGroupZ
are not zero, then the bound compute pipeline must have been created with theVK_PIPELINE_CREATE_DISPATCH_BASE
flag.
Valid Usage (Implicit)
commandBuffer
must be a validVkCommandBuffer
handle
commandBuffer
must be in the recording state- The
VkCommandPool
thatcommandBuffer
was allocated from must support compute operations - This command must only be called outside of a render pass instance
Host Synchronization
- Host access to
commandBuffer
must be externally synchronized
- Host access to the
VkCommandPool
thatcommandBuffer
was allocated from must be externally synchronized
Command Properties
'
Command Buffer Levels | Render Pass Scope | Supported Queue Types | Pipeline Type |
---|---|---|---|
Primary Secondary | Outside | Compute |
See Also
data VkMemoryAllocateFlagsInfo Source #
VkMemoryAllocateFlagsInfo - Structure controlling how many instances of memory will be allocated
Description
If VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT
is not set, the number of
instances allocated depends on whether
VK_MEMORY_HEAP_MULTI_INSTANCE_BIT
is set in the memory heap. If
VK_MEMORY_HEAP_MULTI_INSTANCE_BIT
is set, then memory is allocated for
every physical device in the logical device (as if deviceMask
has bits
set for all device indices). If VK_MEMORY_HEAP_MULTI_INSTANCE_BIT
is
not set, then a single instance of memory is allocated (as if
deviceMask
is set to one).
On some implementations, allocations from a multi-instance heap may
consume memory on all physical devices even if the deviceMask
excludes
some devices. If
VkPhysicalDeviceGroupProperties
::subsetAllocation
is VK_TRUE
, then memory is only consumed for the devices in the device
mask.
Note
In practice, most allocations on a multi-instance heap will be allocated across all physical devices. Unicast allocation support is an optional optimization for a minority of allocations.
Valid Usage
- If
VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT
is set,deviceMask
must be a valid device mask.
- If
VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT
is set,deviceMask
must not be zero
Valid Usage (Implicit)
sType
must beVK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO
flags
must be a valid combination ofVkMemoryAllocateFlagBits
values
See Also
VkMemoryAllocateFlagsInfo | |
|
Instances
Eq VkMemoryAllocateFlagsInfo Source # | |
Show VkMemoryAllocateFlagsInfo Source # | |
showsPrec :: Int -> VkMemoryAllocateFlagsInfo -> ShowS # show :: VkMemoryAllocateFlagsInfo -> String # showList :: [VkMemoryAllocateFlagsInfo] -> ShowS # | |
Storable VkMemoryAllocateFlagsInfo Source # | |
sizeOf :: VkMemoryAllocateFlagsInfo -> Int # alignment :: VkMemoryAllocateFlagsInfo -> Int # peekElemOff :: Ptr VkMemoryAllocateFlagsInfo -> Int -> IO VkMemoryAllocateFlagsInfo # pokeElemOff :: Ptr VkMemoryAllocateFlagsInfo -> Int -> VkMemoryAllocateFlagsInfo -> IO () # peekByteOff :: Ptr b -> Int -> IO VkMemoryAllocateFlagsInfo # pokeByteOff :: Ptr b -> Int -> VkMemoryAllocateFlagsInfo -> IO () # peek :: Ptr VkMemoryAllocateFlagsInfo -> IO VkMemoryAllocateFlagsInfo # poke :: Ptr VkMemoryAllocateFlagsInfo -> VkMemoryAllocateFlagsInfo -> IO () # |
data VkDeviceGroupRenderPassBeginInfo Source #
VkDeviceGroupRenderPassBeginInfo - Set the initial device mask and render areas for a render pass instance
Description
The deviceMask
serves several purposes. It is an upper bound on the
set of physical devices that can be used during the render pass
instance, and the initial device mask when the render pass instance
begins. Render pass attachment load, store, and resolve operations only
apply to physical devices included in the device mask. Subpass
dependencies only apply to the physical devices in the device mask.
If deviceRenderAreaCount
is not zero, then the elements of
pDeviceRenderAreas
override the value of
VkRenderPassBeginInfo
::renderArea
,
and provide a render area specific to each physical device. These render
areas serve the same purpose as
VkRenderPassBeginInfo
::renderArea
,
including controlling the region of attachments that are cleared by
VK_ATTACHMENT_LOAD_OP_CLEAR
and that are resolved into resolve
attachments.
If this structure is not present, the render pass instance’s device mask
is the value of VkDeviceGroupCommandBufferBeginInfo
::deviceMask
. If
this structure is not present or if deviceRenderAreaCount
is zero,
VkRenderPassBeginInfo
::renderArea
is used for all physical devices.
Valid Usage
deviceMask
must be a valid device mask value
deviceMask
must not be zerodeviceMask
must be a subset of the command buffer’s initial device maskdeviceRenderAreaCount
must either be zero or equal to the number of physical devices in the logical device.
Valid Usage (Implicit)
sType
must beVK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO
- If
deviceRenderAreaCount
is not0
,pDeviceRenderAreas
must be a valid pointer to an array ofdeviceRenderAreaCount
VkRect2D
structures
See Also
VkDeviceGroupRenderPassBeginInfo | |
|
Instances
data VkDeviceGroupCommandBufferBeginInfo Source #
VkDeviceGroupCommandBufferBeginInfo - Set the initial device mask for a command buffer
Description
The initial device mask also acts as an upper bound on the set of devices that can ever be in the device mask in the command buffer.
If this structure is not present, the initial value of a command buffer’s device mask is set to include all physical devices in the logical device when the command buffer begins recording.
Valid Usage
deviceMask
must be a valid device mask value
deviceMask
must not be zero
Valid Usage (Implicit)
sType
must beVK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO
See Also
VkDeviceGroupCommandBufferBeginInfo | |
|
Instances
data VkDeviceGroupSubmitInfo Source #
VkDeviceGroupSubmitInfo - Structure indicating which physical devices execute semaphore operations and command buffers
Description
If this structure is not present, semaphore operations and command buffers execute on device index zero.
Valid Usage
waitSemaphoreCount
must equalVkSubmitInfo
::waitSemaphoreCount
commandBufferCount
must equalVkSubmitInfo
::commandBufferCount
signalSemaphoreCount
must equalVkSubmitInfo
::signalSemaphoreCount
- All elements of
pWaitSemaphoreDeviceIndices
andpSignalSemaphoreDeviceIndices
must be valid device indices - All elements of
pCommandBufferDeviceMasks
must be valid device masks
Valid Usage (Implicit)
sType
must beVK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO
- If
waitSemaphoreCount
is not0
,pWaitSemaphoreDeviceIndices
must be a valid pointer to an array ofwaitSemaphoreCount
uint32_t
values - If
commandBufferCount
is not0
,pCommandBufferDeviceMasks
must be a valid pointer to an array ofcommandBufferCount
uint32_t
values - If
signalSemaphoreCount
is not0
,pSignalSemaphoreDeviceIndices
must be a valid pointer to an array ofsignalSemaphoreCount
uint32_t
values
See Also
VkDeviceGroupSubmitInfo | |
|
Instances
Eq VkDeviceGroupSubmitInfo Source # | |
Show VkDeviceGroupSubmitInfo Source # | |
showsPrec :: Int -> VkDeviceGroupSubmitInfo -> ShowS # show :: VkDeviceGroupSubmitInfo -> String # showList :: [VkDeviceGroupSubmitInfo] -> ShowS # | |
Storable VkDeviceGroupSubmitInfo Source # | |
sizeOf :: VkDeviceGroupSubmitInfo -> Int # alignment :: VkDeviceGroupSubmitInfo -> Int # peekElemOff :: Ptr VkDeviceGroupSubmitInfo -> Int -> IO VkDeviceGroupSubmitInfo # pokeElemOff :: Ptr VkDeviceGroupSubmitInfo -> Int -> VkDeviceGroupSubmitInfo -> IO () # peekByteOff :: Ptr b -> Int -> IO VkDeviceGroupSubmitInfo # pokeByteOff :: Ptr b -> Int -> VkDeviceGroupSubmitInfo -> IO () # peek :: Ptr VkDeviceGroupSubmitInfo -> IO VkDeviceGroupSubmitInfo # poke :: Ptr VkDeviceGroupSubmitInfo -> VkDeviceGroupSubmitInfo -> IO () # |
data VkDeviceGroupBindSparseInfo Source #
VkDeviceGroupBindSparseInfo - Structure indicating which instances are bound
Description
These device indices apply to all buffer and image memory binds included
in the batch that points to this structure. The semaphore waits and
signals for the batch are executed only by the physical device specified
by the resourceDeviceIndex
.
If this structure is not present, resourceDeviceIndex
and
memoryDeviceIndex
are assumed to be zero.
Valid Usage
resourceDeviceIndex
andmemoryDeviceIndex
must both be valid device indices.
- Each memory allocation bound in this batch must have allocated an
instance for
memoryDeviceIndex
.
Valid Usage (Implicit)
sType
must beVK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO
See Also
VkDeviceGroupBindSparseInfo | |
|
Instances
type VkPeerMemoryFeatureFlags = VkPeerMemoryFeatureFlagBits Source #
VkPeerMemoryFeatureFlags - Bitmask of VkPeerMemoryFeatureFlagBits
Description
VkPeerMemoryFeatureFlags
is a bitmask type for setting a mask of zero
or more VkPeerMemoryFeatureFlagBits
.
See Also
VkPeerMemoryFeatureFlagBits
, vkGetDeviceGroupPeerMemoryFeatures
,
vkGetDeviceGroupPeerMemoryFeaturesKHR
type VkMemoryAllocateFlags = VkMemoryAllocateFlagBits Source #
VkMemoryAllocateFlags - Bitmask of VkMemoryAllocateFlagBits
Description
VkMemoryAllocateFlags
is a bitmask type for setting a mask of zero or
more VkMemoryAllocateFlagBits
.