diff options
Diffstat (limited to 'src/image')
-rw-r--r-- | src/image/SkImage_Gpu.cpp | 19 | ||||
-rw-r--r-- | src/image/SkImage_Gpu.h | 5 |
2 files changed, 11 insertions, 13 deletions
diff --git a/src/image/SkImage_Gpu.cpp b/src/image/SkImage_Gpu.cpp index fa697cd4b9..c331a295ce 100644 --- a/src/image/SkImage_Gpu.cpp +++ b/src/image/SkImage_Gpu.cpp @@ -43,6 +43,14 @@ extern void SkTextureImageApplyBudgetedDecision(SkImage* image) { } } +SkImageInfo SkImage_Gpu::onImageInfo() const { + SkColorType ct; + if (!GrPixelConfigToColorType(fTexture->config(), &ct)) { + ct = kUnknown_SkColorType; + } + 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)); @@ -316,17 +324,10 @@ sk_sp<SkImage> SkImage::makeTextureImage(GrContext *context) const { } sk_sp<SkImage> SkImage::makeNonTextureImage() const { - GrTexture* texture = as_IB(this)->peekTexture(); - if (!texture) { + if (!this->isTextureBacked()) { return sk_ref_sp(const_cast<SkImage*>(this)); } - SkColorType ct; - sk_sp<SkColorSpace> cs; - if (!GrPixelConfigToColorAndColorSpace(texture->config(), &ct, &cs)) { - return nullptr; - } - SkAlphaType at = this->isOpaque() ? kOpaque_SkAlphaType : kPremul_SkAlphaType; - auto info = SkImageInfo::Make(this->width(), this->height(), ct, at, cs); + SkImageInfo info = as_IB(this)->onImageInfo(); size_t rowBytes = info.minRowBytes(); size_t size = info.getSafeSize(rowBytes); auto data = SkData::MakeUninitialized(size); diff --git a/src/image/SkImage_Gpu.h b/src/image/SkImage_Gpu.h index 0e9169d8d0..5faaa7526b 100644 --- a/src/image/SkImage_Gpu.h +++ b/src/image/SkImage_Gpu.h @@ -27,10 +27,7 @@ public: SkBudgeted); ~SkImage_Gpu() override; - SkImageInfo onImageInfo() const override { - return GrMakeInfoFromTexture(fTexture, fTexture->width(), fTexture->height(), isOpaque(), - fColorSpace); - } + SkImageInfo onImageInfo() const override; void applyBudgetDecision() const { if (SkBudgeted::kYes == fBudgeted) { |