aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/image
diff options
context:
space:
mode:
authorGravatar Brian Osman <brianosman@google.com>2017-03-13 09:33:09 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-03-13 14:07:46 +0000
commit766fcbb01cece88ad88808581b4ecc5a5cb60e01 (patch)
tree690d42936f349568c320d150c582a23218cdd074 /src/image
parent1e0138b58287c086a3085cd2b4640c713d5c9653 (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')
-rw-r--r--src/image/SkImage_Gpu.cpp10
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 {