| Index: src/gpu/SkGrPixelRef.cpp
|
| diff --git a/src/gpu/SkGrPixelRef.cpp b/src/gpu/SkGrPixelRef.cpp
|
| index fd21f1073bf1560a34a95d8b0ac8cdecebd22d33..2131f41b17b3686c07e01afc002d0680d01906c4 100644
|
| --- a/src/gpu/SkGrPixelRef.cpp
|
| +++ b/src/gpu/SkGrPixelRef.cpp
|
| @@ -51,9 +51,9 @@ bool SkROLockPixelsPixelRef::onLockPixelsAreWritable() const {
|
|
|
| ///////////////////////////////////////////////////////////////////////////////
|
|
|
| -static SkGrPixelRef* copyToTexturePixelRef(GrTexture* texture, SkBitmap::Config dstConfig,
|
| +static SkGrPixelRef* copyToTexturePixelRef(GrTexture* texture, SkColorType dstCT,
|
| const SkIRect* subset) {
|
| - if (NULL == texture) {
|
| + if (NULL == texture || kUnknown_SkColorType == dstCT) {
|
| return NULL;
|
| }
|
| GrContext* context = texture->getContext();
|
| @@ -77,15 +77,7 @@ static SkGrPixelRef* copyToTexturePixelRef(GrTexture* texture, SkBitmap::Config
|
| topLeft = NULL;
|
| }
|
| desc.fFlags = kRenderTarget_GrTextureFlagBit | kNoStencil_GrTextureFlagBit;
|
| - desc.fConfig = SkBitmapConfig2GrPixelConfig(dstConfig);
|
| -
|
| - SkImageInfo info;
|
| - if (!GrPixelConfig2ColorType(desc.fConfig, &info.fColorType)) {
|
| - return NULL;
|
| - }
|
| - info.fWidth = desc.fWidth;
|
| - info.fHeight = desc.fHeight;
|
| - info.fAlphaType = kPremul_SkAlphaType;
|
| + desc.fConfig = SkImageInfo2GrPixelConfig(dstCT, kPremul_SkAlphaType);
|
|
|
| GrTexture* dst = context->createUncachedTexture(desc, NULL, 0);
|
| if (NULL == dst) {
|
| @@ -104,6 +96,7 @@ static SkGrPixelRef* copyToTexturePixelRef(GrTexture* texture, SkBitmap::Config
|
| dst->releaseRenderTarget();
|
| #endif
|
|
|
| + SkImageInfo info = SkImageInfo::Make(desc.fWidth, desc.fHeight, dstCT, kPremul_SkAlphaType);
|
| SkGrPixelRef* pixelRef = SkNEW_ARGS(SkGrPixelRef, (info, dst));
|
| SkSafeUnref(dst);
|
| return pixelRef;
|
| @@ -152,18 +145,18 @@ GrTexture* SkGrPixelRef::getTexture() {
|
| return NULL;
|
| }
|
|
|
| -SkPixelRef* SkGrPixelRef::deepCopy(SkBitmap::Config dstConfig, const SkIRect* subset) {
|
| +SkPixelRef* SkGrPixelRef::deepCopy(SkColorType dstCT, const SkIRect* subset) {
|
| if (NULL == fSurface) {
|
| return NULL;
|
| }
|
| -
|
| +
|
| // Note that when copying a render-target-backed pixel ref, we
|
| // return a texture-backed pixel ref instead. This is because
|
| // render-target pixel refs are usually created in conjunction with
|
| // a GrTexture owned elsewhere (e.g., SkGpuDevice), and cannot live
|
| // independently of that texture. Texture-backed pixel refs, on the other
|
| // hand, own their GrTextures, and are thus self-contained.
|
| - return copyToTexturePixelRef(fSurface->asTexture(), dstConfig, subset);
|
| + return copyToTexturePixelRef(fSurface->asTexture(), dstCT, subset);
|
| }
|
|
|
| bool SkGrPixelRef::onReadPixels(SkBitmap* dst, const SkIRect* subset) {
|
|
|