aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--src/core/SkMultiPictureDraw.cpp4
-rw-r--r--src/gpu/SkGpuDevice.cpp4
2 files changed, 6 insertions, 2 deletions
diff --git a/src/core/SkMultiPictureDraw.cpp b/src/core/SkMultiPictureDraw.cpp
index 26e446d2ad..40d93b1dd7 100644
--- a/src/core/SkMultiPictureDraw.cpp
+++ b/src/core/SkMultiPictureDraw.cpp
@@ -124,7 +124,9 @@ void SkMultiPictureDraw::draw(bool flush) {
// 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 54ed413549..6992a45dab 100644
--- a/src/gpu/SkGpuDevice.cpp
+++ b/src/gpu/SkGpuDevice.cpp
@@ -1784,7 +1784,9 @@ bool SkGpuDevice::EXPERIMENTAL_drawPicture(SkCanvas* mainCanvas, const SkPicture
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;
}