| Safe Haskell | Safe-Inferred |
|---|---|
| Language | Haskell2010 |
Vulkan.Extensions.VK_NV_copy_memory_indirect
Description
Name
VK_NV_copy_memory_indirect - device extension
VK_NV_copy_memory_indirect
- Name String
VK_NV_copy_memory_indirect
- Extension Type
- Device extension
- Registered Extension Number
- 427
- Revision
- 1
- Ratification Status
- Not ratified
- Extension and Version Dependencies
- VK_KHR_get_physical_device_properties2 and VK_KHR_buffer_device_address
- Contact
Other Extension Metadata
- Last Modified Date
- 2022-10-14
- Contributors
- Vikram Kushwaha, NVIDIA
- Jeff Bolz, NVIDIA
- Christoph Kubisch, NVIDIA
- Daniel Koch, NVIDIA
Description
This extension adds support for performing copies between memory and image regions using indirect parameters that are read by the device from a buffer during execution. This functionality may be useful for performing copies where the copy parameters are not known during the command buffer creation time.
New Commands
New Structures
CopyMemoryToImageIndirectCommandNVExtending
PhysicalDeviceFeatures2,DeviceCreateInfo:Extending
PhysicalDeviceProperties2:
New Enum Constants
Version History
Revision 1, 2022-10-14 (Vikram Kushwaha)
- Initial draft
See Also
CopyMemoryIndirectCommandNV, CopyMemoryToImageIndirectCommandNV,
PhysicalDeviceCopyMemoryIndirectFeaturesNV,
PhysicalDeviceCopyMemoryIndirectPropertiesNV,
cmdCopyMemoryIndirectNV, cmdCopyMemoryToImageIndirectNV
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
- cmdCopyMemoryIndirectNV :: forall io. MonadIO io => CommandBuffer -> ("copyBufferAddress" ::: DeviceAddress) -> ("copyCount" ::: Word32) -> ("stride" ::: Word32) -> io ()
- cmdCopyMemoryToImageIndirectNV :: forall io. MonadIO io => CommandBuffer -> ("copyBufferAddress" ::: DeviceAddress) -> ("stride" ::: Word32) -> ("dstImage" ::: Image) -> ("dstImageLayout" ::: ImageLayout) -> ("imageSubresources" ::: Vector ImageSubresourceLayers) -> io ()
- data CopyMemoryIndirectCommandNV = CopyMemoryIndirectCommandNV {}
- data CopyMemoryToImageIndirectCommandNV = CopyMemoryToImageIndirectCommandNV {}
- data PhysicalDeviceCopyMemoryIndirectFeaturesNV = PhysicalDeviceCopyMemoryIndirectFeaturesNV {
- indirectCopy :: Bool
- data PhysicalDeviceCopyMemoryIndirectPropertiesNV = PhysicalDeviceCopyMemoryIndirectPropertiesNV {}
- type NV_COPY_MEMORY_INDIRECT_SPEC_VERSION = 1
- pattern NV_COPY_MEMORY_INDIRECT_SPEC_VERSION :: forall a. Integral a => a
- type NV_COPY_MEMORY_INDIRECT_EXTENSION_NAME = "VK_NV_copy_memory_indirect"
- pattern NV_COPY_MEMORY_INDIRECT_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a
Documentation
cmdCopyMemoryIndirectNV Source #
Arguments
| :: forall io. MonadIO io | |
| => CommandBuffer |
|
| -> ("copyBufferAddress" ::: DeviceAddress) |
|
| -> ("copyCount" ::: Word32) |
|
| -> ("stride" ::: Word32) |
|
| -> io () |
vkCmdCopyMemoryIndirectNV - Copy data between memory regions
Description
Each region read from copyBufferAddress is copied from the source
region to the specified destination region. The results are undefined if
any of the source and destination regions overlap in memory.
Valid Usage
- The indirectCopy feature must be enabled
-
copyBufferAddressmust be 4 byte aligned -
stridemust be a multiple of4and must be greater than or equal to sizeof(CopyMemoryIndirectCommandNV) - The
CommandPoolthatcommandBufferwas allocated from must support at least one of thePhysicalDeviceCopyMemoryIndirectPropertiesNV::supportedQueues
Valid Usage (Implicit)
-
commandBuffermust be a validCommandBufferhandle
-
commandBuffermust be in the recording state - The
CommandPoolthatcommandBufferwas allocated from must support transfer, graphics, or compute operations - This command must only be called outside of a render pass instance
- This command must only be called outside of a video coding scope
Host Synchronization
- Host access to
commandBuffermust be externally synchronized
- Host access to the
CommandPoolthatcommandBufferwas allocated from must be externally synchronized
Command Properties
'
| Command Buffer Levels | Render Pass Scope | Video Coding Scope | Supported Queue Types | Command Type |
|---|---|---|---|---|
| Primary Secondary | Outside | Outside | Transfer Graphics Compute | Action |
See Also
cmdCopyMemoryToImageIndirectNV Source #
Arguments
| :: forall io. MonadIO io | |
| => CommandBuffer |
|
| -> ("copyBufferAddress" ::: DeviceAddress) |
|
| -> ("stride" ::: Word32) |
|
| -> ("dstImage" ::: Image) |
|
| -> ("dstImageLayout" ::: ImageLayout) |
|
| -> ("imageSubresources" ::: Vector ImageSubresourceLayers) |
|
| -> io () |
vkCmdCopyMemoryToImageIndirectNV - Copy data from a memory region into an image
Description
Each region in copyBufferAddress is copied from the source memory
region to an image region in the destination image. If the destination
image is of type IMAGE_TYPE_3D, the
starting slice and number of slices to copy are specified in
pImageSubresources::baseArrayLayer and
pImageSubresources::layerCount respectively. The copy must be
performed on a queue that supports indirect copy operations, see
PhysicalDeviceCopyMemoryIndirectPropertiesNV.
Valid Usage
- The indirectCopy feature must be enabled
-
dstImagemust not be a protected image - The
aspectMaskmember for every subresource inpImageSubresourcesmust only have a single bit set - The image
region specified by each element in
copyBufferAddressmust be a region that is contained withindstImage -
dstImagemust have been created withIMAGE_USAGE_TRANSFER_DST_BITusage flag - If
dstImageis non-sparse then it must be bound completely and contiguously to a singleDeviceMemoryobject -
dstImagemust have a sample count equal toSAMPLE_COUNT_1_BIT -
dstImageLayoutmust specify the layout of the image subresources ofdstImageat the time this command is executed on aDevice -
dstImageLayoutmust beIMAGE_LAYOUT_TRANSFER_DST_OPTIMAL,IMAGE_LAYOUT_SHARED_PRESENT_KHR, orIMAGE_LAYOUT_GENERAL - The specified
mipLevelof each region must be less than themipLevelsspecified inImageCreateInfowhendstImagewas created - If the
maintenance5
feature is not enabled,
layerCountmust not beREMAINING_ARRAY_LAYERS - If
layerCountis notREMAINING_ARRAY_LAYERS, the specifiedbaseArrayLayer+layerCountof each region must be less than or equal to thearrayLayersspecified inImageCreateInfowhendstImagewas created - The
imageOffsetandimageExtentmembers of each region must respect the image transfer granularity requirements ofcommandBuffer’s command pool’s queue family, as described inQueueFamilyProperties -
dstImagemust not have been created withflagscontainingIMAGE_CREATE_SUBSAMPLED_BIT_EXT - If the
queue family used to create the
CommandPoolwhichcommandBufferwas allocated from does not supportQUEUE_GRAPHICS_BIT, for each region, theaspectMaskmember ofpImageSubresourcesmust not beIMAGE_ASPECT_DEPTH_BITorIMAGE_ASPECT_STENCIL_BIT - For each
region in
copyBufferAddress,imageOffset.yand (imageExtent.height+imageOffset.y) must both be greater than or equal to0and less than or equal to the height of the specified subresource -
offsetmust be 4 byte aligned -
stridemust be a multiple of4and must be greater than or equal to sizeof(CopyMemoryToImageIndirectCommandNV)
Valid Usage (Implicit)
-
commandBuffermust be a validCommandBufferhandle
-
dstImagemust be a validImagehandle -
dstImageLayoutmust be a validImageLayoutvalue -
pImageSubresourcesmust be a valid pointer to an array ofcopyCountvalidImageSubresourceLayersstructures -
commandBuffermust be in the recording state - The
CommandPoolthatcommandBufferwas allocated from must support transfer, graphics, or compute operations - This command must only be called outside of a render pass instance
- This command must only be called outside of a video coding scope
-
copyCountmust be greater than0 - Both of
commandBuffer, anddstImagemust have been created, allocated, or retrieved from the sameDevice
Host Synchronization
- Host access to
commandBuffermust be externally synchronized
- Host access to the
CommandPoolthatcommandBufferwas allocated from must be externally synchronized
Command Properties
'
| Command Buffer Levels | Render Pass Scope | Video Coding Scope | Supported Queue Types | Command Type |
|---|---|---|---|---|
| Primary Secondary | Outside | Outside | Transfer Graphics Compute | Action |
See Also
VK_NV_copy_memory_indirect,
CommandBuffer,
DeviceAddress,
Image,
ImageLayout,
ImageSubresourceLayers
data CopyMemoryIndirectCommandNV Source #
VkCopyMemoryIndirectCommandNV - Structure specifying indirect memory region copy operation
Valid Usage
See Also
Constructors
| CopyMemoryIndirectCommandNV | |
Fields
| |
Instances
data CopyMemoryToImageIndirectCommandNV Source #
VkCopyMemoryToImageIndirectCommandNV - Structure specifying indirect buffer image copy operation
Valid Usage
-
bufferRowLengthmust be0, or greater than or equal to thewidthmember ofimageExtent -
bufferImageHeightmust be0, or greater than or equal to theheightmember ofimageExtent -
imageOffsetmust specify a valid offset in the destination image -
imageExtentmust specify a valid region in the destination image and can be0
Valid Usage (Implicit)
-
imageSubresourcemust be a validImageSubresourceLayersstructure
See Also
VK_NV_copy_memory_indirect,
DeviceAddress,
Extent3D,
ImageSubresourceLayers,
Offset3D
Constructors
| CopyMemoryToImageIndirectCommandNV | |
Fields
| |
Instances
data PhysicalDeviceCopyMemoryIndirectFeaturesNV Source #
VkPhysicalDeviceCopyMemoryIndirectFeaturesNV - Structure describing indirect copy features supported by an implementation
Members
This structure describes the following features:
Description
If the PhysicalDeviceCopyMemoryIndirectFeaturesNV 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. PhysicalDeviceCopyMemoryIndirectFeaturesNV can also be
used in the pNext chain of DeviceCreateInfo to
selectively enable these features.
Valid Usage (Implicit)
See Also
Constructors
| PhysicalDeviceCopyMemoryIndirectFeaturesNV | |
Fields
| |
Instances
data PhysicalDeviceCopyMemoryIndirectPropertiesNV Source #
VkPhysicalDeviceCopyMemoryIndirectPropertiesNV - Structure describing supported queues for indirect copy
Description
If the
indirectCopy
feature is supported, supportedQueues must return at least one
supported queue.
If the PhysicalDeviceCopyMemoryIndirectPropertiesNV 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
| PhysicalDeviceCopyMemoryIndirectPropertiesNV | |
Fields
| |
Instances
type NV_COPY_MEMORY_INDIRECT_SPEC_VERSION = 1 Source #
pattern NV_COPY_MEMORY_INDIRECT_SPEC_VERSION :: forall a. Integral a => a Source #
type NV_COPY_MEMORY_INDIRECT_EXTENSION_NAME = "VK_NV_copy_memory_indirect" Source #
pattern NV_COPY_MEMORY_INDIRECT_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a Source #