| Index: src/image/SkImage_Gpu.cpp
|
| diff --git a/src/image/SkImage_Gpu.cpp b/src/image/SkImage_Gpu.cpp
|
| index 76f19bc31e319bf1922901e76b4009dd362a0c27..eba66f46ed91146d6faa4a8e7e67697fa6215de5 100644
|
| --- a/src/image/SkImage_Gpu.cpp
|
| +++ b/src/image/SkImage_Gpu.cpp
|
| @@ -51,9 +51,8 @@ SkImageInfo SkImage_Gpu::onImageInfo() const {
|
| return SkImageInfo::Make(fTexture->width(), fTexture->height(), ct, fAlphaType, fColorSpace);
|
| }
|
|
|
| -static SkImageInfo make_info(int w, int h, bool isOpaque, sk_sp<SkColorSpace> colorSpace) {
|
| - return SkImageInfo::MakeN32(w, h, isOpaque ? kOpaque_SkAlphaType : kPremul_SkAlphaType,
|
| - std::move(colorSpace));
|
| +static SkImageInfo make_info(int w, int h, SkAlphaType at, sk_sp<SkColorSpace> colorSpace) {
|
| + return SkImageInfo::MakeN32(w, h, at, std::move(colorSpace));
|
| }
|
|
|
| bool SkImage_Gpu::getROPixels(SkBitmap* dst, CachingHint chint) const {
|
| @@ -64,7 +63,7 @@ bool SkImage_Gpu::getROPixels(SkBitmap* dst, CachingHint chint) const {
|
| return true;
|
| }
|
|
|
| - if (!dst->tryAllocPixels(make_info(this->width(), this->height(), this->isOpaque(),
|
| + if (!dst->tryAllocPixels(make_info(this->width(), this->height(), this->alphaType(),
|
| this->fColorSpace))) {
|
| return false;
|
| }
|
| @@ -88,10 +87,6 @@ GrTexture* SkImage_Gpu::asTextureRef(GrContext* ctx, const GrTextureParams& para
|
| return adjuster.refTextureSafeForParams(params, gammaTreatment, nullptr);
|
| }
|
|
|
| -bool SkImage_Gpu::isOpaque() const {
|
| - return GrPixelConfigIsOpaque(fTexture->config()) || fAlphaType == kOpaque_SkAlphaType;
|
| -}
|
| -
|
| static void apply_premul(const SkImageInfo& info, void* pixels, size_t rowBytes) {
|
| switch (info.colorType()) {
|
| case kRGBA_8888_SkColorType:
|
| @@ -309,17 +304,15 @@ sk_sp<SkImage> SkImage::makeTextureImage(GrContext *context) const {
|
| if (GrTexture* peek = as_IB(this)->peekTexture()) {
|
| return peek->getContext() == context ? sk_ref_sp(const_cast<SkImage*>(this)) : nullptr;
|
| }
|
| - // No way to check whether a image is premul or not?
|
| - SkAlphaType at = this->isOpaque() ? kOpaque_SkAlphaType : kPremul_SkAlphaType;
|
|
|
| if (SkImageCacherator* cacher = as_IB(this)->peekCacherator()) {
|
| GrImageTextureMaker maker(context, cacher, this, kDisallow_CachingHint);
|
| - return create_image_from_maker(&maker, at, this->uniqueID());
|
| + return create_image_from_maker(&maker, this->alphaType(), this->uniqueID());
|
| }
|
|
|
| if (const SkBitmap* bmp = as_IB(this)->onPeekBitmap()) {
|
| GrBitmapTextureMaker maker(context, *bmp);
|
| - return create_image_from_maker(&maker, at, this->uniqueID());
|
| + return create_image_from_maker(&maker, this->alphaType(), this->uniqueID());
|
| }
|
| return nullptr;
|
| }
|
| @@ -445,8 +438,7 @@ size_t SkImage::getDeferredTextureImageData(const GrContextThreadSafeProxy& prox
|
| if (!data && !this->peekPixels(nullptr)) {
|
| return 0;
|
| }
|
| - SkAlphaType at = this->isOpaque() ? kOpaque_SkAlphaType : kPremul_SkAlphaType;
|
| - info = SkImageInfo::MakeN32(scaledSize.width(), scaledSize.height(), at);
|
| + info = SkImageInfo::MakeN32(scaledSize.width(), scaledSize.height(), this->alphaType());
|
| pixelSize = SkAlign8(SkAutoPixmapStorage::AllocSize(info, nullptr));
|
| if (fillMode) {
|
| pixmap.alloc(info);
|
|
|