diff options
-rw-r--r-- | src/core/SkCanvas.cpp | 2 | ||||
-rw-r--r-- | src/gpu/SkGpuDevice.cpp | 7 |
2 files changed, 5 insertions, 4 deletions
diff --git a/src/core/SkCanvas.cpp b/src/core/SkCanvas.cpp index 833df7470f..bcfb5f9914 100644 --- a/src/core/SkCanvas.cpp +++ b/src/core/SkCanvas.cpp @@ -2364,7 +2364,7 @@ void SkCanvas::onDrawDrawable(SkDrawable* dr, const SkMatrix* matrix) { // drawable bounds are no longer reliable (e.g. android displaylist) // so don't use them for quick-reject this->predrawNotify(); - this->baseDevice()->drawDrawable(dr, matrix, this); + this->topDevice()->drawDrawable(dr, matrix, this); } void SkCanvas::onDrawAtlas2(const SkImage* atlas, const SkRSXform xform[], const SkRect tex[], diff --git a/src/gpu/SkGpuDevice.cpp b/src/gpu/SkGpuDevice.cpp index fc6a8623d7..ffcfe53b52 100644 --- a/src/gpu/SkGpuDevice.cpp +++ b/src/gpu/SkGpuDevice.cpp @@ -950,13 +950,14 @@ void SkGpuDevice::drawDrawable(SkDrawable* drawable, const SkMatrix* matrix, SkC GrBackendApi api = this->recordingContext()->backend(); if (GrBackendApi::kVulkan == api) { - const SkMatrix& ctm = canvas->getLocalToDeviceAs3x3(); + const SkMatrix& ctm = this->localToDevice(); const SkMatrix& combinedMatrix = matrix ? SkMatrix::Concat(ctm, *matrix) : ctm; std::unique_ptr<SkDrawable::GpuDrawHandler> gpuDraw = - drawable->snapGpuDrawHandler(api, combinedMatrix, canvas->getDeviceClipBounds(), + drawable->snapGpuDrawHandler(api, combinedMatrix, this->devClipBounds(), this->imageInfo()); if (gpuDraw) { - fSurfaceDrawContext->drawDrawable(std::move(gpuDraw), drawable->getBounds()); + fSurfaceDrawContext->drawDrawable( + std::move(gpuDraw), combinedMatrix.mapRect(drawable->getBounds())); return; } } |