files/en-us/web/api/gpucommandencoder/copytexturetotexture/index.md
{{APIRef("WebGPU API")}}{{SecureContext_Header}}
The copyTextureToTexture() method of the
{{domxref("GPUCommandEncoder")}} interface encodes a command that copies data from one {{domxref("GPUTexture")}} to another.
copyTextureToTexture(source, destination, copySize)
source
copySize, this defines the region of the source texture subresource.destination
copySize, this defines the region of the destination texture subresource.copySize
: An object or array specifying the width, height, and depth/array layer count of the copied data. The width value must always be specified, while the height and depth/array layer count values are optional and will default to 1 if omitted.
For example, you can pass an array [16, 16, 2], or its equivalent object { width: 16, height: 16, depthOrArrayLayers: 2 }.
A copy texture object has the following structure:
aspect {{optional_inline}}
: An enumerated value defining which aspects of the texture to copy the data from/to. Possible values are:
"all"
"depth-only"
"stencil-only"
If omitted, aspect takes a value of "all".
mipLevel {{optional_inline}}
mipLevel defaults to 0.origin {{optional_inline}}
: An object or array specifying the origin of the copy/destination — the minimum corner of the texture region to copy the data from/to. Together with size, this defines the full extent of the region to copy from/to. The x, y, and z values default to 0 if any of all of origin is omitted.
For example, you can pass an array like [0, 0, 0], or its equivalent object { x: 0, y: 0, z: 0 }.
texture
None ({{jsxref("Undefined")}}).
The following criteria must be met when calling copyTextureToTexture(), otherwise a {{domxref("GPUValidationError")}} is generated and the {{domxref("GPUCommandEncoder")}} becomes invalid.
For the source:
source's {{domxref("GPUTexture.usage")}} includes the GPUTextureUsage.COPY_SRC flag.For the destination:
source's {{domxref("GPUTexture.usage")}} includes the GPUTextureUsage.COPY_DST flag.For source and destination:
mipLevel is less than the {{domxref("GPUTexture.mipLevelCount")}}.origin.x is a multiple of the texel block width of the {{domxref("GPUTexture.format")}}.origin.y is a multiple of the texel block height of the {{domxref("GPUTexture.format")}}.texture {{domxref("GPUTexture.format")}}s are copy-compatible.texture {{domxref("GPUTexture.sampleCount")}}s are equal.size.texture's {{domxref("GPUTexture.sampleCount")}} is 1.aspect refers to a single aspect of the {{domxref("GPUTexture.format")}}.texture is compatible with the copySize.commandEncoder.copyTextureToTexture(
{
texture: sourceTexture,
},
{
texture: destinationTexture,
},
{
width: 16,
height: 16,
depthOrArrayLayers: 2,
},
);
{{Specifications}}
{{Compat}}