Add SkSurface::asyncReadPixels()
Initial version. Current limitations: No Metal support, no color space
conversions, for each src color type only one dst color type is legal (
which may or may not be the src color type), no alpha type conversions.
Bug: skia:8962
Change-Id: I6f046a32342b8f5ffb1799d67d7ba15c250ef9bf
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/212981
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
diff --git a/src/gpu/mtl/GrMtlGpuCommandBuffer.h b/src/gpu/mtl/GrMtlGpuCommandBuffer.h
index 5a6bc36..6f85603 100644
--- a/src/gpu/mtl/GrMtlGpuCommandBuffer.h
+++ b/src/gpu/mtl/GrMtlGpuCommandBuffer.h
@@ -33,7 +33,11 @@
const SkIPoint& dstPoint) override {
fGpu->copySurface(fTexture, fOrigin, src, srcOrigin, srcRect, dstPoint);
}
-
+ void transferFrom(const SkIRect& srcRect, GrColorType bufferColorType,
+ GrGpuBuffer* transferBuffer, size_t offset) override {
+ fGpu->transferPixelsFrom(fTexture, srcRect.fLeft, srcRect.fTop, srcRect.width(),
+ srcRect.height(), bufferColorType, transferBuffer, offset);
+ }
void insertEventMarker(const char* msg) override {}
private:
@@ -62,7 +66,8 @@
// TODO: this could be more efficient
state->doUpload(upload);
}
-
+ void transferFrom(const SkIRect& srcRect, GrColorType bufferColorType,
+ GrGpuBuffer* transferBuffer, size_t offset) override;
void copy(GrSurface* src, GrSurfaceOrigin srcOrigin, const SkIRect& srcRect,
const SkIPoint& dstPoint) override;