Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(327)

Unified Diff: src/core/SkCanvas.cpp

Issue 2241353002: pin as texture api (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: use refPinnedTexture in GpuDevice Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: src/core/SkCanvas.cpp
diff --git a/src/core/SkCanvas.cpp b/src/core/SkCanvas.cpp
index 80ff34d417e3a08f08fcda4e41e8c1d52e2617d5..bad05151889a6d385a705b12c5ced048fb8226e2 100644
--- a/src/core/SkCanvas.cpp
+++ b/src/core/SkCanvas.cpp
@@ -2372,7 +2372,26 @@ bool SkCanvas::canDrawBitmapAsSprite(SkScalar x, SkScalar y, int w, int h, const
return ir.contains(fMCRec->fRasterClip.getBounds());
}
+class TestPinImage {
+public:
+ TestPinImage(SkCanvas* canvas, const SkImage* image) {
+ if ((fCtx = canvas->getGrContext()) != nullptr) {
+ fImage = image;
+ image->pinAsTexture(fCtx);
+ }
+ }
+ ~TestPinImage() {
+ if (fImage) {
+ fImage->unpinAsTexture(fCtx);
+ }
+ }
+ GrContext* fCtx;
+ const SkImage* fImage = nullptr;
+};
+
void SkCanvas::onDrawImage(const SkImage* image, SkScalar x, SkScalar y, const SkPaint* paint) {
+ TestPinImage test(this, image);
+
TRACE_EVENT0("disabled-by-default-skia", "SkCanvas::drawImage()");
SkRect bounds = SkRect::MakeXYWH(x, y,
SkIntToScalar(image->width()), SkIntToScalar(image->height()));
@@ -2444,6 +2463,8 @@ void SkCanvas::onDrawImageLattice(const SkImage* image, const Lattice& lattice,
void SkCanvas::onDrawImageRect(const SkImage* image, const SkRect* src, const SkRect& dst,
const SkPaint* paint, SrcRectConstraint constraint) {
+ TestPinImage test(this, image);
+
TRACE_EVENT0("disabled-by-default-skia", "SkCanvas::drawImageRect()");
if (nullptr == paint || paint->canComputeFastBounds()) {
SkRect storage = dst;

Powered by Google App Engine
This is Rietveld 408576698