| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Graphics.Vulkan.Core11.Promoted_from_VK_KHR_device_group
- 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_BITspecifies that the memory can be accessed as the source of avkCmdCopyBuffer,vkCmdCopyImage,vkCmdCopyBufferToImage, orvkCmdCopyImageToBuffercommand.
VK_PEER_MEMORY_FEATURE_COPY_DST_BITspecifies that the memory can be accessed as the destination of avkCmdCopyBuffer,vkCmdCopyImage,vkCmdCopyBufferToImage, orvkCmdCopyImageToBuffercommand.VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BITspecifies that the memory can be read as any memory access type.VK_PEER_MEMORY_FEATURE_GENERIC_DST_BITspecifies 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
Constructors
| VkPeerMemoryFeatureFlagBits VkFlags |
Instances
newtype VkMemoryAllocateFlagBits Source #
VkMemoryAllocateFlagBits - Bitmask specifying flags for a device memory allocation
See Also
Constructors
| VkMemoryAllocateFlagBits VkFlags |
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
deviceis the logical device that owns the memory.
heapIndexis the index of the memory heap from which the memory is allocated.localDeviceIndexis the device index of the physical device that performs the memory access.remoteDeviceIndexis the device index of the physical device that the memory is allocated for.pPeerMemoryFeaturesis a pointer to a bitmask ofVkPeerMemoryFeatureFlagBitsindicating which types of memory accesses are supported for the combination of heap, local, and remote devices.
Description
Valid Usage
heapIndexmust be less thanmemoryHeapCount
localDeviceIndexmust be a valid device indexremoteDeviceIndexmust be a valid device indexlocalDeviceIndexmust not equal remoteDeviceIndex
Valid Usage (Implicit)
devicemust be a validVkDevicehandle
pPeerMemoryFeaturesmust be a valid pointer to aVkPeerMemoryFeatureFlagsvaluepPeerMemoryFeaturesmust not be0
See Also
vkCmdSetDeviceMask :: ("commandBuffer" ::: VkCommandBuffer) -> ("deviceMask" ::: Word32) -> IO () Source #
vkCmdSetDeviceMask - Modify device mask of a command buffer
Parameters
commandBufferis command buffer whose current device mask is modified.
deviceMaskis 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
deviceMaskmust be a valid device mask value
deviceMaskmust not be zerodeviceMaskmust not include any set bits that were not in theVkDeviceGroupCommandBufferBeginInfo::deviceMaskvalue when the command buffer began recording.- If
vkCmdSetDeviceMaskis called inside a render pass instance,deviceMaskmust not include any set bits that were not in theVkDeviceGroupRenderPassBeginInfo::deviceMaskvalue when the render pass instance began recording.
Valid Usage (Implicit)
commandBuffermust be a validVkCommandBufferhandle
commandBuffermust be in the recording state- The
VkCommandPoolthatcommandBufferwas allocated from must support graphics, compute, or transfer operations
Host Synchronization
- Host access to
commandBuffermust be externally synchronized
- Host access to the
VkCommandPoolthatcommandBufferwas allocated from must be externally synchronized
Command Properties
+-----------------+-----------------+-----------------+-----------------+ | <#VkCommandBuff | <#vkCmdBeginRen | <#VkQueueFlagBi | <#synchronizati | | erLevel Command | derPass Render | ts Supported Qu | on-pipeline-sta | | Buffer Levels> | Pass Scope> | eue Types> | ges-types Pipel | | | | | ine Type> | +=================+=================+=================+=================+ | Primary | Both | Graphics | | | Secondary | | 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
commandBufferis the command buffer into which the command will be recorded.
baseGroupXis the start value for the X component ofWorkgroupId.baseGroupYis the start value for the Y component ofWorkgroupId.baseGroupZis the start value for the Z component ofWorkgroupId.groupCountXis the number of local workgroups to dispatch in the X dimension.groupCountYis the number of local workgroups to dispatch in the Y dimension.groupCountZis 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
vkCmdDispatchapply
baseGroupXmust be less thanVkPhysicalDeviceLimits::maxComputeWorkGroupCount[0]baseGroupXmust be less thanVkPhysicalDeviceLimits::maxComputeWorkGroupCount[1]baseGroupZmust be less thanVkPhysicalDeviceLimits::maxComputeWorkGroupCount[2]groupCountXmust be less than or equal toVkPhysicalDeviceLimits::maxComputeWorkGroupCount[0] minusbaseGroupXgroupCountYmust be less than or equal toVkPhysicalDeviceLimits::maxComputeWorkGroupCount[1] minusbaseGroupYgroupCountZmust be less than or equal toVkPhysicalDeviceLimits::maxComputeWorkGroupCount[2] minusbaseGroupZ- If any of
baseGroupX,baseGroupY, orbaseGroupZare not zero, then the bound compute pipeline must have been created with theVK_PIPELINE_CREATE_DISPATCH_BASEflag.
Valid Usage (Implicit)
commandBuffermust be a validVkCommandBufferhandle
commandBuffermust be in the recording state- The
VkCommandPoolthatcommandBufferwas allocated from must support compute operations - This command must only be called outside of a render pass instance
Host Synchronization
- Host access to
commandBuffermust be externally synchronized
- Host access to the
VkCommandPoolthatcommandBufferwas allocated from must be externally synchronized
Command Properties
+-----------------+-----------------+-----------------+-----------------+ | <#VkCommandBuff | <#vkCmdBeginRen | <#VkQueueFlagBi | <#synchronizati | | erLevel Command | derPass Render | ts Supported Qu | on-pipeline-sta | | Buffer Levels> | Pass Scope> | eue Types> | ges-types Pipel | | | | | ine Type> | +=================+=================+=================+=================+ | Primary | Outside | Compute | | | Secondary | | | | +-----------------+-----------------+-----------------+-----------------+
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_BITis set,deviceMaskmust be a valid device mask.
- If
VK_MEMORY_ALLOCATE_DEVICE_MASK_BITis set,deviceMaskmust not be zero
Valid Usage (Implicit)
sTypemust beVK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO
flagsmust be a valid combination ofVkMemoryAllocateFlagBitsvalues
See Also
Constructors
| VkMemoryAllocateFlagsInfo | |
Fields
| |
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
deviceMaskmust be a valid device mask value
deviceMaskmust not be zerodeviceMaskmust be a subset of the command buffer’s initial device maskdeviceRenderAreaCountmust either be zero or equal to the number of physical devices in the logical device.
Valid Usage (Implicit)
sTypemust beVK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO
- If
deviceRenderAreaCountis not0,pDeviceRenderAreasmust be a valid pointer to an array ofdeviceRenderAreaCountVkRect2Dstructures
See Also
Constructors
| VkDeviceGroupRenderPassBeginInfo | |
Fields
| |
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
deviceMaskmust be a valid device mask value
deviceMaskmust not be zero
Valid Usage (Implicit)
sTypemust beVK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO
See Also
Constructors
| VkDeviceGroupCommandBufferBeginInfo | |
Fields
| |
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
waitSemaphoreCountmust equalVkSubmitInfo::waitSemaphoreCount
commandBufferCountmust equalVkSubmitInfo::commandBufferCountsignalSemaphoreCountmust equalVkSubmitInfo::signalSemaphoreCount- All elements of
pWaitSemaphoreDeviceIndicesandpSignalSemaphoreDeviceIndicesmust be valid device indices - All elements of
pCommandBufferDeviceMasksmust be valid device masks
Valid Usage (Implicit)
sTypemust beVK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO
- If
waitSemaphoreCountis not0,pWaitSemaphoreDeviceIndicesmust be a valid pointer to an array ofwaitSemaphoreCountuint32_tvalues - If
commandBufferCountis not0,pCommandBufferDeviceMasksmust be a valid pointer to an array ofcommandBufferCountuint32_tvalues - If
signalSemaphoreCountis not0,pSignalSemaphoreDeviceIndicesmust be a valid pointer to an array ofsignalSemaphoreCountuint32_tvalues
See Also
Constructors
| VkDeviceGroupSubmitInfo | |
Fields
| |
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
resourceDeviceIndexandmemoryDeviceIndexmust both be valid device indices.
- Each memory allocation bound in this batch must have allocated an
instance for
memoryDeviceIndex.
Valid Usage (Implicit)
sTypemust beVK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO
See Also
Constructors
| VkDeviceGroupBindSparseInfo | |
Fields
| |
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.