Skip to content

ZenFG TypeScript API / webgpu / root / CopyOperation

Type Alias: CopyOperation ​

CopyOperation = { copySize: TextureSize; destination: TextureHandle; destinationAspect?: GPUTextureAspect; destinationMipLevel?: number; destinationOrigin?: TextureOrigin; source: TextureHandle; sourceAspect?: GPUTextureAspect; sourceMipLevel?: number; sourceOrigin?: TextureOrigin; type: "texture-to-texture"; } | { destination: BufferHandle; destinationOffset?: GPUSize64; size: GPUSize64; source: BufferHandle; sourceOffset?: GPUSize64; type: "buffer-to-buffer"; } | { copySize: TextureSize; destination: TextureHandle; destinationAspect?: GPUTextureAspect; destinationMipLevel?: number; destinationOrigin?: TextureOrigin; source: BufferHandle; sourceLayout: Omit<GPUTexelCopyBufferLayout, "buffer">; type: "buffer-to-texture"; } | { copySize: TextureSize; destination: BufferHandle; destinationLayout: Omit<GPUTexelCopyBufferLayout, "buffer">; source: TextureHandle; sourceAspect?: GPUTextureAspect; sourceMipLevel?: number; sourceOrigin?: TextureOrigin; type: "texture-to-buffer"; }

Defined in: packages/webgpu/src/types.ts:749

Beta

A declarative WebGPU copy operation recorded by FrameGraph.

FrameGraph tracks logical resource ranges and requires a known buffer-copy footprint for non-empty buffer-texture copies. Retained zero-sized copies are encoded for native validation but do not produce graph reads or writes. Texture-to-buffer copies preserve previous contents when their byte footprint includes row or layer padding; contiguous footprints overwrite their range. Native command alignment, format, aspect, and overlap validation remains with WebGPU. Handles must belong to the current recording.

Union Members ​

Type Literal ​

{ copySize: TextureSize; destination: TextureHandle; destinationAspect?: GPUTextureAspect; destinationMipLevel?: number; destinationOrigin?: TextureOrigin; source: TextureHandle; sourceAspect?: GPUTextureAspect; sourceMipLevel?: number; sourceOrigin?: TextureOrigin; type: "texture-to-texture"; }

copySize ​

readonly copySize: TextureSize

Extent copied between the selected subresources.

destination ​

readonly destination: TextureHandle

Destination texture.

destinationAspect? ​

readonly optional destinationAspect?: GPUTextureAspect

Destination aspect; defaults from the destination format.

destinationMipLevel? ​

readonly optional destinationMipLevel?: number

Destination mip level; defaults to 0.

destinationOrigin? ​

readonly optional destinationOrigin?: TextureOrigin

Destination origin; defaults to zero.

source ​

readonly source: TextureHandle

Source texture.

sourceAspect? ​

readonly optional sourceAspect?: GPUTextureAspect

Source aspect; defaults from the source format.

sourceMipLevel? ​

readonly optional sourceMipLevel?: number

Source mip level; defaults to 0.

sourceOrigin? ​

readonly optional sourceOrigin?: TextureOrigin

Source origin; defaults to zero.

type ​

readonly type: "texture-to-texture"

Copies texture subresources.


Type Literal ​

{ destination: BufferHandle; destinationOffset?: GPUSize64; size: GPUSize64; source: BufferHandle; sourceOffset?: GPUSize64; type: "buffer-to-buffer"; }

destination ​

readonly destination: BufferHandle

Destination buffer.

destinationOffset? ​

readonly optional destinationOffset?: GPUSize64

Destination byte offset; defaults to 0.

size ​

readonly size: GPUSize64

Number of bytes copied.

source ​

readonly source: BufferHandle

Source buffer.

sourceOffset? ​

readonly optional sourceOffset?: GPUSize64

Source byte offset; defaults to 0.

type ​

readonly type: "buffer-to-buffer"

Copies a byte range between buffers.


Type Literal ​

{ copySize: TextureSize; destination: TextureHandle; destinationAspect?: GPUTextureAspect; destinationMipLevel?: number; destinationOrigin?: TextureOrigin; source: BufferHandle; sourceLayout: Omit<GPUTexelCopyBufferLayout, "buffer">; type: "buffer-to-texture"; }

copySize ​

readonly copySize: TextureSize

Texture extent copied.

destination ​

readonly destination: TextureHandle

Destination texture.

destinationAspect? ​

readonly optional destinationAspect?: GPUTextureAspect

Destination aspect; defaults from the destination format.

destinationMipLevel? ​

readonly optional destinationMipLevel?: number

Destination mip level; defaults to 0.

destinationOrigin? ​

readonly optional destinationOrigin?: TextureOrigin

Destination origin; defaults to zero.

source ​

readonly source: BufferHandle

Source buffer.

sourceLayout ​

readonly sourceLayout: Omit<GPUTexelCopyBufferLayout, "buffer">

Buffer layout excluding the logical buffer handle.

type ​

readonly type: "buffer-to-texture"

Copies texel data from a buffer into a texture.


Type Literal ​

{ copySize: TextureSize; destination: BufferHandle; destinationLayout: Omit<GPUTexelCopyBufferLayout, "buffer">; source: TextureHandle; sourceAspect?: GPUTextureAspect; sourceMipLevel?: number; sourceOrigin?: TextureOrigin; type: "texture-to-buffer"; }

copySize ​

readonly copySize: TextureSize

Texture extent copied.

destination ​

readonly destination: BufferHandle

Destination buffer.

destinationLayout ​

readonly destinationLayout: Omit<GPUTexelCopyBufferLayout, "buffer">

Buffer layout excluding the logical buffer handle.

source ​

readonly source: TextureHandle

Source texture.

sourceAspect? ​

readonly optional sourceAspect?: GPUTextureAspect

Source aspect; defaults from the source format.

sourceMipLevel? ​

readonly optional sourceMipLevel?: number

Source mip level; defaults to 0.

sourceOrigin? ​

readonly optional sourceOrigin?: TextureOrigin

Source origin; defaults to zero.

type ​

readonly type: "texture-to-buffer"

Copies texel data from a texture into a buffer.

Open source / MIT licensed