diff --git a/spec/index.bs b/spec/index.bs index 29ae02937c..02c82061de 100644 --- a/spec/index.bs +++ b/spec/index.bs @@ -5718,10 +5718,17 @@ write into a [=texture=] from the {{GPUQueue}}. - For {{GPUTextureDimension/2d}} textures, data is copied between one or multiple contiguous [=images=] and [=array layers=]. - For {{GPUTextureDimension/3d}} textures, data is copied between one or multiple contiguous [=images=] and depth [=slices=]. +Issue: Define images more precisely. In particular, define them as being comprised of [=texel blocks=]. + Operations that copy between byte arrays and textures always work with rows of [=texel blocks=], which we'll call block rows. It's not possible to update only a part of a [=texel block=]. -Issue: Define images more precisely. In particular, define them as being comprised of [=texel blocks=]. +[=Texel blocks=] are tightly packed within each [=block row=] in the linear memory layout of an +image copy, with each subsequent texel block immediately following the previous texel block, +with no padding. +This includes [[#depth-formats|copies to/from specific aspects of depth/stencil textures]]: +stencil values are tightly packed in an array of bytes; +depth values are tightly packed in an array of the appropriate type ("depth16unorm" or "depth32float"). Issue: Define the exact copy semantics, by reference to common algorithms shared by the copy methods. @@ -5743,7 +5750,7 @@ Issue: Define the exact copy semantics, by reference to common algorithms shared ### GPUImageCopyBuffer ### {#gpu-image-copy-buffer} -In an image copy operation, {{GPUImageCopyBuffer}} defines a {{GPUBuffer}} and, together with +In an [=image copy=] operation, {{GPUImageCopyBuffer}} defines a {{GPUBuffer}} and, together with the `copySize`, how image data is laid out in the buffer's memory (see {{GPUImageDataLayout}}).