diff options
author | Greg Daniel <egdaniel@google.com> | 2021-09-16 08:35:15 -0400 |
---|---|---|
committer | Greg Daniel <egdaniel@google.com> | 2021-09-20 20:35:15 +0000 |
commit | e579754b63d90b21d356808920265d9dfaea7bb0 (patch) | |
tree | 3e7f9d545e51615cfd343fb0c8eca6f6724f8a9a | |
parent | 57caf0895f596a617fd1d9b56068e7fc08e70476 (diff) | |
download | skia-e579754b63d90b21d356808920265d9dfaea7bb0.tar.gz |
Make sure we use device bounds for DrawableOp
Bug: 198924563
Test: manual testing of failing gmail webview
Merged-In: I82a5d9c5ada0f91634cbf4ca87f3da6dc0e2ec79
Change-Id: Ib5f68419742cded6150932ff31505a877b337272
-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; } } |