diff options
Diffstat (limited to 'src/core/SkBlitter.cpp')
-rw-r--r-- | src/core/SkBlitter.cpp | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/src/core/SkBlitter.cpp b/src/core/SkBlitter.cpp index c97956c20f..86c49d08ae 100644 --- a/src/core/SkBlitter.cpp +++ b/src/core/SkBlitter.cpp @@ -857,6 +857,12 @@ SkBlitter* SkBlitter::Choose(const SkPixmap& device, p->setColor(0); } + if (kAlpha_8_SkColorType == device.colorType() && drawCoverage) { + SkASSERT(nullptr == shader); + SkASSERT(paint->isSrcOver()); + return allocator->createT<SkA8_Coverage_Blitter>(device, *paint); + } + if (SkBlitter* blitter = SkCreateRasterPipelineBlitter(device, *paint, matrix, allocator)) { return blitter; } @@ -913,11 +919,8 @@ SkBlitter* SkBlitter::Choose(const SkPixmap& device, SkBlitter* blitter = nullptr; switch (device.colorType()) { case kAlpha_8_SkColorType: - if (drawCoverage) { - SkASSERT(nullptr == shader); - SkASSERT(paint->isSrcOver()); - blitter = allocator->createT<SkA8_Coverage_Blitter>(device, *paint); - } else if (shader) { + SkASSERT(!drawCoverage); // Handled above. + if (shader) { blitter = allocator->createT<SkA8_Shader_Blitter>(device, *paint, shaderContext); } else { blitter = allocator->createT<SkA8_Blitter>(device, *paint); |