GPUCommandEncoder: copyTextureToTexture() method
Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
Secure context: This feature is available only in secure contexts (HTTPS), in some or all supporting browsers.
The copyTextureToTexture() method of the
GPUCommandEncoder interface encodes a command that copies data from one GPUTexture to another.
Syntax
copyTextureToTexture(source, destination, copySize)
Parameters
source-
An object (see Copy texture object structure) defining the texture to copy the data from. Combined with
copySize, this defines the region of the source texture subresource. destination-
An object (see Copy texture object structure) defining the texture to write the data to. Combined with
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 }.
Copy texture object structure
A copy texture object has the following structure:
aspectOptional-
An enumerated value defining which aspects of the texture to copy the data from/to. Possible values are:
"all"-
All available aspects of the texture format will be copied from/to, which can mean all or any of color, depth, and stencil, depending on what kind of format you are dealing with.
"depth-only"-
Only the depth aspect of a depth-or-stencil format will be copied from/to.
"stencil-only"-
Only the stencil aspect of a depth-or-stencil format will be copied from/to.
If omitted,
aspecttakes a value of"all". mipLevelOptional-
A number representing the mip-map level of the texture to copy the data from/to. If omitted,
mipLeveldefaults to 0. originOptional-
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. Thex,y, andzvalues default to 0 if any of all oforiginis omitted.For example, you can pass an array like
[0, 0, 0], or its equivalent object{ x: 0, y: 0, z: 0 }. texture-
A
GPUTextureobject representing the texture to copy the data from/to.
Return value
None (Undefined).
Validation
The following criteria must be met when calling copyTextureToTexture(), otherwise a GPUValidationError is generated and the GPUCommandEncoder becomes invalid.
For the source:
- The
source'sGPUTexture.usageincludes theGPUTextureUsage.COPY_SRCflag.
For the destination:
- The
source'sGPUTexture.usageincludes theGPUTextureUsage.COPY_DSTflag.
For source and destination:
mipLevelis less than theGPUTexture.mipLevelCount.origin.xis a multiple of the texel block width of theGPUTexture.format.origin.yis a multiple of the texel block height of theGPUTexture.format.- The source and destination
textureGPUTexture.formats are copy-compatible. - The source and destination
textureGPUTexture.sampleCounts are equal. - If the
GPUTexture.formatis a depth-or-stencil format orGPUTexture.sampleCountis more than 1, the subresource size is equal tosize. - The
texture'sGPUTexture.sampleCountis 1. aspectrefers to a single aspect of theGPUTexture.format.- That aspect is a valid image copy source/destination according to depth-or-stencil formats.
- The
textureis compatible with thecopySize.
Examples
commandEncoder.copyTextureToTexture(
{
texture: sourceTexture,
},
{
texture: destinationTexture,
},
{
width: 16,
height: 16,
depthOrArrayLayers: 2,
},
);
Specifications
| Specification |
|---|
| WebGPU> # dom-gpucommandencoder-copytexturetotexture> |
Browser compatibility
Loading…
See also
- The WebGPU API