Metal: Code clean up in copy commands
This patch cleans up the code related to both buffer-texture and
texture-texture copies on Metal backend by moving the creation of
MTLOrigin and MTLSize into helper functions.
BUG=dawn:42
Change-Id: Ia3340b9c8b0a5001d775cd391fb8301207b4d2ac
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/8840
Reviewed-by: Austin Eng <enga@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Jiawei Shao <jiawei.shao@intel.com>
diff --git a/src/dawn_native/metal/CommandBufferMTL.mm b/src/dawn_native/metal/CommandBufferMTL.mm
index efb3555..28c0c96 100644
--- a/src/dawn_native/metal/CommandBufferMTL.mm
+++ b/src/dawn_native/metal/CommandBufferMTL.mm
@@ -311,6 +311,14 @@
std::array<CopyInfo, kMaxTextureBufferCopyRegions> copies;
};
+ MTLOrigin MakeMTLOrigin(Origin3D origin) {
+ return MTLOriginMake(origin.x, origin.y, origin.z);
+ }
+
+ MTLSize MakeMTLSize(Extent3D extent) {
+ return MTLSizeMake(extent.width, extent.height, extent.depth);
+ }
+
TextureBufferCopySplit ComputeTextureBufferCopySplit(Origin3D origin,
Extent3D copyExtent,
Format textureFormat,
@@ -361,7 +369,7 @@
copy.copies[0].bufferOffset = bufferOffset;
copy.copies[0].bytesPerRow = rowPitch;
copy.copies[0].bytesPerImage = bytesPerImage;
- copy.copies[0].textureOrigin = MTLOriginMake(origin.x, origin.y, origin.z);
+ copy.copies[0].textureOrigin = MakeMTLOrigin(origin);
copy.copies[0].copyExtent =
MTLSizeMake(clampedCopyExtentWidth, clampedCopyExtentHeight, copyExtent.depth);
return copy;
@@ -374,7 +382,7 @@
copy.copies[copy.count].bufferOffset = currentOffset;
copy.copies[copy.count].bytesPerRow = rowPitch;
copy.copies[copy.count].bytesPerImage = bytesPerImage;
- copy.copies[copy.count].textureOrigin = MTLOriginMake(origin.x, origin.y, origin.z);
+ copy.copies[copy.count].textureOrigin = MakeMTLOrigin(origin);
copy.copies[copy.count].copyExtent = MTLSizeMake(
clampedCopyExtentWidth, clampedCopyExtentHeight, copyExtent.depth - 1);
@@ -526,32 +534,17 @@
Texture* srcTexture = ToBackend(copy->source.texture.Get());
Texture* dstTexture = ToBackend(copy->destination.texture.Get());
- MTLOrigin srcOrigin;
- srcOrigin.x = copy->source.origin.x;
- srcOrigin.y = copy->source.origin.y;
- srcOrigin.z = copy->source.origin.z;
-
- MTLOrigin dstOrigin;
- dstOrigin.x = copy->destination.origin.x;
- dstOrigin.y = copy->destination.origin.y;
- dstOrigin.z = copy->destination.origin.z;
-
- MTLSize size;
- size.width = copy->copySize.width;
- size.height = copy->copySize.height;
- size.depth = copy->copySize.depth;
-
encoders.EnsureBlit(commandBuffer);
[encoders.blit copyFromTexture:srcTexture->GetMTLTexture()
sourceSlice:copy->source.arrayLayer
sourceLevel:copy->source.mipLevel
- sourceOrigin:srcOrigin
- sourceSize:size
+ sourceOrigin:MakeMTLOrigin(copy->source.origin)
+ sourceSize:MakeMTLSize(copy->copySize)
toTexture:dstTexture->GetMTLTexture()
destinationSlice:copy->destination.arrayLayer
destinationLevel:copy->destination.mipLevel
- destinationOrigin:dstOrigin];
+ destinationOrigin:MakeMTLOrigin(copy->destination.origin)];
} break;
default: { UNREACHABLE(); } break;