Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
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
CopyMemoryToImageIndirectCommandNV
Extending
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 #
:: 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
-
copyBufferAddress
must be 4 byte aligned -
stride
must be a multiple of4
and must be greater than or equal to sizeof(CopyMemoryIndirectCommandNV
) - The
CommandPool
thatcommandBuffer
was allocated from must support at least one of thePhysicalDeviceCopyMemoryIndirectPropertiesNV
::supportedQueues
Valid Usage (Implicit)
-
commandBuffer
must be a validCommandBuffer
handle
-
commandBuffer
must be in the recording state - The
CommandPool
thatcommandBuffer
was 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
commandBuffer
must be externally synchronized
- Host access to the
CommandPool
thatcommandBuffer
was 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 #
:: 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
-
dstImage
must not be a protected image - The
aspectMask
member for every subresource inpImageSubresources
must only have a single bit set - The image
region specified by each element in
copyBufferAddress
must be a region that is contained withindstImage
-
dstImage
must have been created withIMAGE_USAGE_TRANSFER_DST_BIT
usage flag - If
dstImage
is non-sparse then it must be bound completely and contiguously to a singleDeviceMemory
object -
dstImage
must have a sample count equal toSAMPLE_COUNT_1_BIT
-
dstImageLayout
must specify the layout of the image subresources ofdstImage
at the time this command is executed on aDevice
-
dstImageLayout
must beIMAGE_LAYOUT_TRANSFER_DST_OPTIMAL
,IMAGE_LAYOUT_SHARED_PRESENT_KHR
, orIMAGE_LAYOUT_GENERAL
- The specified
mipLevel
of each region must be less than themipLevels
specified inImageCreateInfo
whendstImage
was created - If the
maintenance5
feature is not enabled,
layerCount
must not beREMAINING_ARRAY_LAYERS
- If
layerCount
is notREMAINING_ARRAY_LAYERS
, the specifiedbaseArrayLayer
+layerCount
of each region must be less than or equal to thearrayLayers
specified inImageCreateInfo
whendstImage
was created - The
imageOffset
andimageExtent
members of each region must respect the image transfer granularity requirements ofcommandBuffer
’s command pool’s queue family, as described inQueueFamilyProperties
-
dstImage
must not have been created withflags
containingIMAGE_CREATE_SUBSAMPLED_BIT_EXT
- If the
queue family used to create the
CommandPool
whichcommandBuffer
was allocated from does not supportQUEUE_GRAPHICS_BIT
, for each region, theaspectMask
member ofpImageSubresources
must not beIMAGE_ASPECT_DEPTH_BIT
orIMAGE_ASPECT_STENCIL_BIT
- For each
region in
copyBufferAddress
,imageOffset.y
and (imageExtent.height
+imageOffset.y
) must both be greater than or equal to0
and less than or equal to the height of the specified subresource -
offset
must be 4 byte aligned -
stride
must be a multiple of4
and must be greater than or equal to sizeof(CopyMemoryToImageIndirectCommandNV
)
Valid Usage (Implicit)
-
commandBuffer
must be a validCommandBuffer
handle
-
dstImage
must be a validImage
handle -
dstImageLayout
must be a validImageLayout
value -
pImageSubresources
must be a valid pointer to an array ofcopyCount
validImageSubresourceLayers
structures -
commandBuffer
must be in the recording state - The
CommandPool
thatcommandBuffer
was 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
-
copyCount
must be greater than0
- Both of
commandBuffer
, anddstImage
must have been created, allocated, or retrieved from the sameDevice
Host Synchronization
- Host access to
commandBuffer
must be externally synchronized
- Host access to the
CommandPool
thatcommandBuffer
was 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
CopyMemoryIndirectCommandNV | |
|
Instances
data CopyMemoryToImageIndirectCommandNV Source #
VkCopyMemoryToImageIndirectCommandNV - Structure specifying indirect buffer image copy operation
Valid Usage
-
bufferRowLength
must be0
, or greater than or equal to thewidth
member ofimageExtent
-
bufferImageHeight
must be0
, or greater than or equal to theheight
member ofimageExtent
-
imageOffset
must specify a valid offset in the destination image -
imageExtent
must specify a valid region in the destination image and can be0
Valid Usage (Implicit)
-
imageSubresource
must be a validImageSubresourceLayers
structure
See Also
VK_NV_copy_memory_indirect,
DeviceAddress
,
Extent3D
,
ImageSubresourceLayers
,
Offset3D
CopyMemoryToImageIndirectCommandNV | |
|
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
PhysicalDeviceCopyMemoryIndirectFeaturesNV | |
|
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
PhysicalDeviceCopyMemoryIndirectPropertiesNV | |
|
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 #