diff options
author | Brian Osman <brianosman@google.com> | 2017-03-13 09:33:09 -0400 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2017-03-13 14:07:46 +0000 |
commit | 766fcbb01cece88ad88808581b4ecc5a5cb60e01 (patch) | |
tree | 690d42936f349568c320d150c582a23218cdd074 /src/image/SkImage_Gpu.cpp | |
parent | 1e0138b58287c086a3085cd2b4640c713d5c9653 (diff) |
Treat cross context images as Ganesh-created resources
Always create them budgeted, and register them with the cache (not as
wrapped resources).
Re-land (with fixes) of: https://skia-review.googlesource.com/9497
BUG=skia:
Change-Id: I2df7198adc99efa3eea99fc86b0b2930136f22c7
Reviewed-on: https://skia-review.googlesource.com/9544
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Diffstat (limited to 'src/image/SkImage_Gpu.cpp')
-rw-r--r-- | src/image/SkImage_Gpu.cpp | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/src/image/SkImage_Gpu.cpp b/src/image/SkImage_Gpu.cpp index a3649acf19..ffa7d9ed9f 100644 --- a/src/image/SkImage_Gpu.cpp +++ b/src/image/SkImage_Gpu.cpp @@ -264,7 +264,8 @@ static sk_sp<SkImage> new_wrapped_texture_common(GrContext* ctx, const GrBackend tex->setRelease(releaseProc, releaseCtx); } - const SkBudgeted budgeted = SkBudgeted::kNo; + const SkBudgeted budgeted = (kAdoptAndCache_GrWrapOwnership == ownership) + ? SkBudgeted::kYes : SkBudgeted::kNo; return sk_make_sp<SkImage_Gpu>(kNeedNewImageUniqueID, at, std::move(tex), std::move(colorSpace), budgeted); } @@ -476,8 +477,11 @@ sk_sp<SkImage> SkImage::MakeFromCrossContextImageData( ccid->fTextureData->attachToContext(context); } - return MakeFromAdoptedTexture(context, ccid->fDesc, ccid->fAlphaType, - std::move(ccid->fColorSpace)); + // This texture was created by Ganesh on another thread (see MakeFromEncoded, above). + // Thus, we can import it back into our cache and treat it as our own (again). + GrWrapOwnership ownership = kAdoptAndCache_GrWrapOwnership; + return new_wrapped_texture_common(context, ccid->fDesc, ccid->fAlphaType, + std::move(ccid->fColorSpace), ownership, nullptr, nullptr); } sk_sp<SkImage> SkImage::makeNonTextureImage() const { |