diff options
author | Mike Klein <mtklein@chromium.org> | 2017-01-13 07:59:23 -0500 |
---|---|---|
committer | Mike Klein <mtklein@chromium.org> | 2017-01-13 13:25:28 +0000 |
commit | e71b167dbd4d8da76495ca85db83d1a3b49aaabd (patch) | |
tree | 4624f3a1daebaa48a831f8b028606f45217ee3f6 /src/core/SkBlitter.cpp | |
parent | aeef5610d7a3fe4a53fc27b20486da79bf7a949a (diff) |
Attempt 3: SkRasterPipelineBlitter: support A8
Now that SkOpts_hsw.cpp no longer hooks in SkRasterPipeline_opts,
it should be safe to try this again.
This reverts commit 86d55b312a2649d80890ccf75f24571ada0265f1.
Change-Id: I2d495600ca9d3a0f49c2e02fbaaae349cefac3a1
Reviewed-on: https://skia-review.googlesource.com/6985
Reviewed-by: Mike Klein <mtklein@chromium.org>
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); |