Structures

VkBufferImageCopy

Structure specifying a buffer image copy operation

For both vkCmdCopyBufferToImage and vkCmdCopyImageToBuffer, each element of pRegions is a structure defined as:

typedef struct VkBufferImageCopy {
    VkDeviceSize bufferOffset;
    uint32_t bufferRowLength;
    uint32_t bufferImageHeight;
    VkImageSubresourceLayers imageSubresource;
    VkOffset3D imageOffset;
    VkExtent3D imageExtent;
} VkBufferImageCopy;
  • bufferOffset is the offset in bytes from the start of the buffer object where the image data is copied from or to.
  • bufferRowLength and bufferImageHeight specify in texels a subregion of a larger two- or three-dimensional image in buffer memory, and control the addressing calculations. If either of these values is zero, that aspect of the buffer memory is considered to be tightly packed according to the imageExtent.
  • imageSubresource is a VkImageSubresourceLayers used to specify the specific image subresources of the image used for the source or destination image data.
  • imageOffset selects the initial x, y, z offsets in texels of the sub-region of the source or destination image data.
  • imageExtent is the size in texels of the image to copy in width, height and depth.

Valid Usage

VUID-VkBufferImageCopy-bufferRowLength-09101

bufferRowLength must be 0, or greater than or equal to the width member of imageExtent

VUID-VkBufferImageCopy-bufferImageHeight-09102

bufferImageHeight must be 0, or greater than or equal to the height member of imageExtent

VUID-VkBufferImageCopy-aspectMask-09103

The aspectMask member of imageSubresource must only have a single bit set

VUID-VkBufferImageCopy-imageExtent-06659

imageExtent.width must not be 0

VUID-VkBufferImageCopy-imageExtent-06660

imageExtent.height must not be 0

VUID-VkBufferImageCopy-imageExtent-06661

imageExtent.depth must not be 0

Valid Usage (Implicit)