Make sure we use device bounds for DrawableOp am: e579754b63

Original change: https://googleplex-android-review.googlesource.com/c/platform/external/skia/+/15844554

Change-Id: I8fd791164288ccdbd6d71d0676886bde5c06e406
diff --git a/src/core/SkCanvas.cpp b/src/core/SkCanvas.cpp
index 833df74..bcfb5f9 100644
--- a/src/core/SkCanvas.cpp
+++ b/src/core/SkCanvas.cpp
@@ -2364,7 +2364,7 @@
     // 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 fc6a862..ffcfe53 100644
--- a/src/gpu/SkGpuDevice.cpp
+++ b/src/gpu/SkGpuDevice.cpp
@@ -950,13 +950,14 @@
 
     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;
         }
     }