diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/gpu/mtl/GrMtlGpu.h | 4 | ||||
-rw-r--r-- | src/gpu/mtl/GrMtlGpu.mm | 19 |
2 files changed, 20 insertions, 3 deletions
diff --git a/src/gpu/mtl/GrMtlGpu.h b/src/gpu/mtl/GrMtlGpu.h index 1c25dedbac..054f1e6842 100644 --- a/src/gpu/mtl/GrMtlGpu.h +++ b/src/gpu/mtl/GrMtlGpu.h @@ -113,9 +113,7 @@ private: void* buffer, size_t rowBytes) override; bool onWritePixels(GrSurface*, int left, int top, int width, int height, GrColorType, - const GrMipLevel[], int) override { - return false; - } + const GrMipLevel[], int mipLevelCount) override; bool onTransferPixels(GrTexture*, int left, int top, int width, int height, diff --git a/src/gpu/mtl/GrMtlGpu.mm b/src/gpu/mtl/GrMtlGpu.mm index 892e4bc5a1..e4c7c64e5f 100644 --- a/src/gpu/mtl/GrMtlGpu.mm +++ b/src/gpu/mtl/GrMtlGpu.mm @@ -527,6 +527,25 @@ void GrMtlGpu::testingOnly_flushGpuAndSync() { } #endif // GR_TEST_UTILS +bool GrMtlGpu::onWritePixels(GrSurface* surface, int left, int top, int width, int height, + GrColorType srcColorType, const GrMipLevel texels[], + int mipLevelCount) { + GrMtlTexture* mtlTexture = static_cast<GrMtlTexture*>(surface->asTexture()); + if (!mtlTexture) { + return false; + } + if (!mipLevelCount) { + return false; + } +#ifdef SK_DEBUG + for (int i = 0; i < mipLevelCount; i++) { + SkASSERT(texels[i].fPixels); + } +#endif + return this->uploadToTexture(mtlTexture, left, top, width, height, srcColorType, texels, + mipLevelCount); +} + bool GrMtlGpu::onReadPixels(GrSurface* surface, int left, int top, int width, int height, GrColorType dstColorType, void* buffer, size_t rowBytes) { SkASSERT(surface); |