Disable layer hoisting for non-8888 canvases
This just stops the bleeding. A real fix would propagate the canvas' backing type down to the layer hoister.
GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1957433002
Review-Url: https://codereview.chromium.org/1957433002
diff --git a/src/core/SkMultiPictureDraw.cpp b/src/core/SkMultiPictureDraw.cpp
index 26e446d..40d93b1 100644
--- a/src/core/SkMultiPictureDraw.cpp
+++ b/src/core/SkMultiPictureDraw.cpp
@@ -124,7 +124,9 @@
// we only expect 1 context for all the canvases
SkASSERT(data.fCanvas->getGrContext() == context);
- if (!data.fPaint) {
+ if (!data.fPaint &&
+ (kRGBA_8888_SkColorType == data.fCanvas->imageInfo().colorType() ||
+ kBGRA_8888_SkColorType == data.fCanvas->imageInfo().colorType())) {
SkRect clipBounds;
if (!data.fCanvas->getClipBounds(&clipBounds)) {
continue;
diff --git a/src/gpu/SkGpuDevice.cpp b/src/gpu/SkGpuDevice.cpp
index 54ed413..6992a45 100644
--- a/src/gpu/SkGpuDevice.cpp
+++ b/src/gpu/SkGpuDevice.cpp
@@ -1784,7 +1784,9 @@
ASSERT_SINGLE_OWNER
#ifndef SK_IGNORE_GPU_LAYER_HOISTING
// todo: should handle this natively
- if (paint) {
+ if (paint ||
+ (kRGBA_8888_SkColorType != mainCanvas->imageInfo().colorType() &&
+ kBGRA_8888_SkColorType != mainCanvas->imageInfo().colorType())) {
return false;
}