Instance Method

copy(from:sourceSlice:sourceLevel:sourceOrigin:sourceSize:to:destinationOffset:destinationBytesPerRow:destinationBytesPerImage:options:)

Encodes a command to copy image data from a slice of a source texture into a destination buffer.

Required.

Declaration

func copy(from sourceTexture: MTLTexture, sourceSlice: Int, sourceLevel: Int, sourceOrigin: MTLOrigin, sourceSize: MTLSize, to destinationBuffer: MTLBuffer, destinationOffset: Int, destinationBytesPerRow: Int, destinationBytesPerImage: Int, options: MTLBlitOption)

Parameters

sourceTexture

The source texture for the copy operation. The value must not be a isFramebufferOnly texture.

sourceSlice

The slice of the source texture.

sourceLevel

The mipmap level of the source texture.

sourceOrigin

The origin of the portion of the source texture where the copying starts.

sourceSize

The number of source pixels, in width, height, and depth, to copy to the destination buffer. When you copy from a 1D texture, height and depth must be 1. When you copy from a 2D texture, depth must be 1.

destinationBuffer

The destination buffer for the copy operation.

destinationOffset

The byte offset within the destination buffer to copy the first row into. The value must be a multiple of the source texture's pixel size, in bytes.

destinationBytesPerRow

The stride in bytes between rows of the source texture memory. The value must be a multiple of the source texture's pixel size, in bytes. The value must be less than or equal to 32,767 multiplied by the source texture’s pixel size.

destinationBytesPerImage

For 3D textures and 2D array textures, the stride in bytes between 2D images of the source buffer memory. The value must be a multiple of the source texture's pixel size, in bytes.

options

Options for controlling the blit operation.

Discussion

Use sourceSlice and sourceLevel to select a single image of the source texture.

If the texture’s pixel format is a compressed format, then sourceSize must be a multiple of the pixel format’s block size or be clamped to the edge of the texture if the block extends outside the bounds of a texture. For a compressed format, destinationBytesPerRow is the number of bytes from the start of one row of blocks to the start of the next row of blocks.

If the texture’s pixel format is a combined depth/stencil format, then options must be set to either blit the depth attachment portion or blit the stencil attachment portion.

This method allows blitting from a texture with a PVRTC pixel format if the rowLinearPVRTC option is specified.