diff options
author | Matt Sarett <msarett@google.com> | 2017-01-23 15:51:01 +0000 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2017-01-23 15:51:14 +0000 |
commit | 26ecfe0af8da1d17a079e17af85c5c576bfeca84 (patch) | |
tree | ffce62c50685254f0728a711f023b0d1a6792283 /src/image/SkImage_Gpu.cpp | |
parent | bfe8dca7dfdd9cafbccba0a637f2fcd58c7a54fb (diff) |
Revert "Refactor trimming logic for read/writePixels()"
This reverts commit 977f64cbfad1ecd7fd4b1231c694c7e828fda1f0.
Reason for revert: Triggering nanobench asserts
Original change's description:
> Refactor trimming logic for read/writePixels()
>
> (1) Move trimming logic into Bitmap/Pixmap level for
> raster. Everything goes through here, so we'll
> only do the work once.
> (2) This means it also goes to GPU level.
> (3) Always use SkReadPixelsRec rather than inlining
> the logic.
> (4) Create an SkWritePixelsRec to encapsulate write
> trimming.
> (5) Disabled kIndex8 as a dst - always.
>
> BUG=skia:6021
>
> Change-Id: I748f50c3b726f7c6de5462e2b1ccb54bc387a510
> Reviewed-on: https://skia-review.googlesource.com/7326
> Reviewed-by: Mike Reed <reed@google.com>
> Commit-Queue: Matt Sarett <msarett@google.com>
>
TBR=msarett@google.com,brianosman@google.com,reed@google.com
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=skia:6021
Change-Id: If9aacc6ce8b20e3dfe8a0f22ebca653f28356175
Reviewed-on: https://skia-review.googlesource.com/7379
Commit-Queue: Matt Sarett <msarett@google.com>
Reviewed-by: Matt Sarett <msarett@google.com>
Diffstat (limited to 'src/image/SkImage_Gpu.cpp')
-rw-r--r-- | src/image/SkImage_Gpu.cpp | 23 |
1 files changed, 8 insertions, 15 deletions
diff --git a/src/image/SkImage_Gpu.cpp b/src/image/SkImage_Gpu.cpp index fb93350039..7247ae36fa 100644 --- a/src/image/SkImage_Gpu.cpp +++ b/src/image/SkImage_Gpu.cpp @@ -27,7 +27,6 @@ #include "SkImageInfoPriv.h" #include "SkMipMap.h" #include "SkPixelRef.h" -#include "SkReadPixelsRec.h" SkImage_Gpu::SkImage_Gpu(int w, int h, uint32_t uniqueID, SkAlphaType at, sk_sp<GrTexture> tex, sk_sp<SkColorSpace> colorSpace, SkBudgeted budgeted) @@ -129,26 +128,20 @@ static void apply_premul(const SkImageInfo& info, void* pixels, size_t rowBytes) } } -bool SkImage_Gpu::onReadPixels(const SkImageInfo& dstInfo, void* dstPixels, size_t dstRB, +bool SkImage_Gpu::onReadPixels(const SkImageInfo& info, void* pixels, size_t rowBytes, int srcX, int srcY, CachingHint) const { - if (!SkImageInfoValidConversion(dstInfo, this->onImageInfo())) { + if (!SkImageInfoValidConversion(info, this->onImageInfo())) { return false; } - SkReadPixelsRec rec(dstInfo, dstPixels, dstRB, srcX, srcY); - if (!rec.trim(this->width(), this->height())) { - return false; - } - - GrPixelConfig config = SkImageInfo2GrPixelConfig(rec.fInfo, *fTexture->getContext()->caps()); + GrPixelConfig config = SkImageInfo2GrPixelConfig(info, *fTexture->getContext()->caps()); uint32_t flags = 0; - if (kUnpremul_SkAlphaType == rec.fInfo.alphaType() && kPremul_SkAlphaType == fAlphaType) { + if (kUnpremul_SkAlphaType == info.alphaType() && kPremul_SkAlphaType == fAlphaType) { // let the GPU perform this transformation for us flags = GrContext::kUnpremul_PixelOpsFlag; } - if (!fTexture->readPixels(fColorSpace.get(), rec.fX, rec.fY, rec.fInfo.width(), - rec.fInfo.height(), config, rec.fInfo.colorSpace(), rec.fPixels, - rec.fRowBytes, flags)) { + if (!fTexture->readPixels(fColorSpace.get(), srcX, srcY, info.width(), info.height(), config, + info.colorSpace(), pixels, rowBytes, flags)) { return false; } // do we have to manually fix-up the alpha channel? @@ -159,8 +152,8 @@ bool SkImage_Gpu::onReadPixels(const SkImageInfo& dstInfo, void* dstPixels, size // // Should this be handled by Ganesh? todo:? // - if (kPremul_SkAlphaType == rec.fInfo.alphaType() && kUnpremul_SkAlphaType == fAlphaType) { - apply_premul(rec.fInfo, rec.fPixels, rec.fRowBytes); + if (kPremul_SkAlphaType == info.alphaType() && kUnpremul_SkAlphaType == fAlphaType) { + apply_premul(info, pixels, rowBytes); } return true; } |