diff options
author | Mike Klein <mtklein@chromium.org> | 2017-06-27 19:53:21 -0400 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2017-06-28 17:41:56 +0000 |
commit | c2d207603edbbd3809d5144fe4a048a2ad774910 (patch) | |
tree | 085c3b6856acffa6f2a1f88616517c3186046a73 | |
parent | e5cb7c9a5eb3d4d848a0adb50502382be14d193d (diff) |
clean up low-hanging swap_rb
There are two remaining swap_rb uses that both look non-trivial to
replace:
- sampling out of index8 when the color table is bgra
- table transforms on bgra inputs in SkColorSpaceXform
I don't think it's a big deal to just leave swap_rb around,
just a little sad.
Change-Id: I3d30200cf867cbf37d6f86572b1574d3e22e3490
Reviewed-on: https://skia-review.googlesource.com/21040
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Klein <mtklein@chromium.org>
-rw-r--r-- | src/codec/SkWebpCodec.cpp | 9 | ||||
-rw-r--r-- | src/core/SkBlitter_Sprite.cpp | 7 | ||||
-rw-r--r-- | src/core/SkColorSpaceXform.cpp | 7 | ||||
-rw-r--r-- | src/core/SkColorSpaceXform_A2B.cpp | 6 | ||||
-rw-r--r-- | src/core/SkConvertPixels.cpp | 6 | ||||
-rw-r--r-- | src/core/SkModeColorFilter.cpp | 10 | ||||
-rw-r--r-- | src/core/SkXfermode.cpp | 24 | ||||
-rw-r--r-- | src/images/SkImageEncoderFns.h | 7 | ||||
-rw-r--r-- | tests/SkRasterPipelineTest.cpp | 3 | ||||
-rw-r--r-- | tools/picture_utils.cpp | 7 |
10 files changed, 36 insertions, 50 deletions
diff --git a/src/codec/SkWebpCodec.cpp b/src/codec/SkWebpCodec.cpp index 68301b93f8..d94011a867 100644 --- a/src/codec/SkWebpCodec.cpp +++ b/src/codec/SkWebpCodec.cpp @@ -320,10 +320,13 @@ static void pick_memory_stages(SkColorType ct, SkRasterPipeline::StockStage* loa if (store) *store = SkRasterPipeline::store_565; break; case kRGBA_8888_SkColorType: - case kBGRA_8888_SkColorType: if (load) *load = SkRasterPipeline::load_8888; if (store) *store = SkRasterPipeline::store_8888; break; + case kBGRA_8888_SkColorType: + if (load) *load = SkRasterPipeline::load_bgra; + if (store) *store = SkRasterPipeline::store_bgra; + break; case kRGBA_F16_SkColorType: if (load) *load = SkRasterPipeline::load_f16; if (store) *store = SkRasterPipeline::store_f16; @@ -358,10 +361,6 @@ static void blend_line(SkColorType dstCT, void* dst, SkRasterPipeline::StockStage load_src; pick_memory_stages(srcCT, &load_src, nullptr); p.append(load_src, src); - if (dstCT != srcCT) { - SkASSERT(kBGRA_8888_SkColorType == srcCT); - p.append(SkRasterPipeline::swap_rb); - } p.extend(convert_to_linear_premul); p.append(SkRasterPipeline::srcover); diff --git a/src/core/SkBlitter_Sprite.cpp b/src/core/SkBlitter_Sprite.cpp index 20ec357a7b..9b1ee2946e 100644 --- a/src/core/SkBlitter_Sprite.cpp +++ b/src/core/SkBlitter_Sprite.cpp @@ -122,8 +122,8 @@ public: case kGray_8_SkColorType: p.append(SkRasterPipeline::load_g8, &fSrcPtr); break; case kRGB_565_SkColorType: p.append(SkRasterPipeline::load_565, &fSrcPtr); break; case kARGB_4444_SkColorType: p.append(SkRasterPipeline::load_4444, &fSrcPtr); break; - case kRGBA_8888_SkColorType: - case kBGRA_8888_SkColorType: p.append(SkRasterPipeline::load_8888, &fSrcPtr); break; + case kBGRA_8888_SkColorType: p.append(SkRasterPipeline::load_bgra, &fSrcPtr); break; + case kRGBA_8888_SkColorType: p.append(SkRasterPipeline::load_8888, &fSrcPtr); break; case kRGBA_F16_SkColorType: p.append(SkRasterPipeline::load_f16, &fSrcPtr); break; default: SkASSERT(false); } @@ -131,9 +131,6 @@ public: (!fSource.colorSpace() || fSource.colorSpace()->gammaCloseToSRGB())) { p.append_from_srgb(fSource.alphaType()); } - if (fSource.colorType() == kBGRA_8888_SkColorType) { - p.append(SkRasterPipeline::swap_rb); - } if (fSource.colorType() == kAlpha_8_SkColorType) { p.append(SkRasterPipeline::set_rgb, &fPaintColor); p.append(SkRasterPipeline::premul); diff --git a/src/core/SkColorSpaceXform.cpp b/src/core/SkColorSpaceXform.cpp index 8887bc279f..ff177d480e 100644 --- a/src/core/SkColorSpaceXform.cpp +++ b/src/core/SkColorSpaceXform.cpp @@ -1173,16 +1173,16 @@ bool SkColorSpaceXform_XYZ<kCSM> break; case kBGRA_8888_ColorFormat: if (kLinear_SrcGamma == fSrcGamma) { - pipeline.append(SkRasterPipeline::load_8888, &src); + pipeline.append(SkRasterPipeline::load_bgra, &src); } else { loadTables.fSrc = src; loadTables.fR = fSrcGammaTables[2]; loadTables.fG = fSrcGammaTables[1]; loadTables.fB = fSrcGammaTables[0]; pipeline.append(SkRasterPipeline::load_tables, &loadTables); + pipeline.append(SkRasterPipeline::swap_rb); } - pipeline.append(SkRasterPipeline::swap_rb); break; case kRGBA_F16_ColorFormat: if (kLinear_SrcGamma != fSrcGamma) { @@ -1288,8 +1288,7 @@ bool SkColorSpaceXform_XYZ<kCSM> pipeline.append(SkRasterPipeline::store_8888, &dst); break; case kBGRA_8888_ColorFormat: - pipeline.append(SkRasterPipeline::swap_rb); - pipeline.append(SkRasterPipeline::store_8888, &dst); + pipeline.append(SkRasterPipeline::store_bgra, &dst); break; case kRGBA_F16_ColorFormat: if (kLinear_DstGamma != fDstGamma) { diff --git a/src/core/SkColorSpaceXform_A2B.cpp b/src/core/SkColorSpaceXform_A2B.cpp index 2e710f5cca..4cfb05d8e1 100644 --- a/src/core/SkColorSpaceXform_A2B.cpp +++ b/src/core/SkColorSpaceXform_A2B.cpp @@ -23,8 +23,7 @@ bool SkColorSpaceXform_A2B::onApply(ColorFormat dstFormat, void* dst, ColorForma SkRasterPipeline_<256> pipeline; switch (srcFormat) { case kBGRA_8888_ColorFormat: - pipeline.append(SkRasterPipeline::load_8888, &src); - pipeline.append(SkRasterPipeline::swap_rb); + pipeline.append(SkRasterPipeline::load_bgra, &src); break; case kRGBA_8888_ColorFormat: pipeline.append(SkRasterPipeline::load_8888, &src); @@ -48,8 +47,7 @@ bool SkColorSpaceXform_A2B::onApply(ColorFormat dstFormat, void* dst, ColorForma switch (dstFormat) { case kBGRA_8888_ColorFormat: - pipeline.append(SkRasterPipeline::swap_rb); - pipeline.append(SkRasterPipeline::store_8888, &dst); + pipeline.append(SkRasterPipeline::store_bgra, &dst); break; case kRGBA_8888_ColorFormat: pipeline.append(SkRasterPipeline::store_8888, &dst); diff --git a/src/core/SkConvertPixels.cpp b/src/core/SkConvertPixels.cpp index b3a6a06974..7859972188 100644 --- a/src/core/SkConvertPixels.cpp +++ b/src/core/SkConvertPixels.cpp @@ -283,8 +283,7 @@ static void convert_with_pipeline(const SkImageInfo& dstInfo, void* dstRow, size pipeline.append(SkRasterPipeline::load_8888, &srcRow); break; case kBGRA_8888_SkColorType: - pipeline.append(SkRasterPipeline::load_8888, &srcRow); - pipeline.append(SkRasterPipeline::swap_rb); + pipeline.append(SkRasterPipeline::load_bgra, &srcRow); break; case kRGB_565_SkColorType: pipeline.append(SkRasterPipeline::load_565, &srcRow); @@ -376,8 +375,7 @@ static void convert_with_pipeline(const SkImageInfo& dstInfo, void* dstRow, size pipeline.append(SkRasterPipeline::store_8888, &dstRow); break; case kBGRA_8888_SkColorType: - pipeline.append(SkRasterPipeline::swap_rb); - pipeline.append(SkRasterPipeline::store_8888, &dstRow); + pipeline.append(SkRasterPipeline::store_bgra, &dstRow); break; case kRGB_565_SkColorType: pipeline.append(SkRasterPipeline::store_565, &dstRow); diff --git a/src/core/SkModeColorFilter.cpp b/src/core/SkModeColorFilter.cpp index bca23c63bb..0b553333ac 100644 --- a/src/core/SkModeColorFilter.cpp +++ b/src/core/SkModeColorFilter.cpp @@ -87,15 +87,17 @@ void SkModeColorFilter::filterSpan(const SkPMColor shader[], int count, SkPMColo SkSTArenaAlloc<256> alloc; SkRasterPipeline p(&alloc); - p.append(SkRasterPipeline::load_8888, &shader); if (kN32_SkColorType == kBGRA_8888_SkColorType) { - p.append(SkRasterPipeline::swap_rb); + p.append(SkRasterPipeline::load_bgra, &shader); + } else { + p.append(SkRasterPipeline::load_8888, &shader); } this->appendStages(&p, nullptr, &alloc, false); if (kN32_SkColorType == kBGRA_8888_SkColorType) { - p.append(SkRasterPipeline::swap_rb); + p.append(SkRasterPipeline::store_bgra, &result); + } else { + p.append(SkRasterPipeline::store_8888, &result); } - p.append(SkRasterPipeline::store_8888, &result); p.run(0, 0, count); } break; } diff --git a/src/core/SkXfermode.cpp b/src/core/SkXfermode.cpp index 54ac5891a3..e96d2f4abf 100644 --- a/src/core/SkXfermode.cpp +++ b/src/core/SkXfermode.cpp @@ -34,19 +34,14 @@ public: const SkAlpha aa[]) const override { SkASSERT(dst && src && count >= 0); - bool needs_swap = (kN32_SkColorType == kBGRA_8888_SkColorType) && - SkBlendMode_CaresAboutRBOrder(fMode); - SkRasterPipeline_<256> p; - p.append(SkRasterPipeline::load_8888, &dst); - if (needs_swap) { - p.append(SkRasterPipeline::swap_rb); - } - p.append(SkRasterPipeline::move_src_dst); - p.append(SkRasterPipeline::load_8888, &src); - if (needs_swap) { - p.append(SkRasterPipeline::swap_rb); + if (kN32_SkColorType == kBGRA_8888_SkColorType) { + p.append(SkRasterPipeline::load_bgra_dst, &dst); + p.append(SkRasterPipeline::load_bgra , &src); + } else { + p.append(SkRasterPipeline::load_8888_dst, &dst); + p.append(SkRasterPipeline::load_8888, &src); } SkBlendMode_AppendStagesNoClamp(fMode, &p); @@ -55,10 +50,11 @@ public: } SkBlendMode_AppendClampIfNeeded(fMode, &p); - if (needs_swap) { - p.append(SkRasterPipeline::swap_rb); + if (kN32_SkColorType == kBGRA_8888_SkColorType) { + p.append(SkRasterPipeline::store_bgra, &dst); + } else { + p.append(SkRasterPipeline::store_8888, &dst); } - p.append(SkRasterPipeline::store_8888, &dst); p.run(0, 0, count); } diff --git a/src/images/SkImageEncoderFns.h b/src/images/SkImageEncoderFns.h index 6012a45697..4e73e4ff75 100644 --- a/src/images/SkImageEncoderFns.h +++ b/src/images/SkImageEncoderFns.h @@ -154,9 +154,10 @@ static inline void transform_scanline_bgrA(char* SK_RESTRICT dst, const char* SK template <bool kIsRGBA> static inline void transform_scanline_unpremultiply_sRGB(void* dst, const void* src, int width) { SkRasterPipeline_<256> p; - p.append(SkRasterPipeline::load_8888, &src); - if (!kIsRGBA) { - p.append(SkRasterPipeline::swap_rb); + if (kIsRGBA) { + p.append(SkRasterPipeline::load_8888, &src); + } else { + p.append(SkRasterPipeline::load_bgra, &src); } p.append_from_srgb(kPremul_SkAlphaType); diff --git a/tests/SkRasterPipelineTest.cpp b/tests/SkRasterPipelineTest.cpp index 4a951c06c3..52b4152a11 100644 --- a/tests/SkRasterPipelineTest.cpp +++ b/tests/SkRasterPipelineTest.cpp @@ -216,8 +216,7 @@ DEF_TEST(SkRasterPipeline_lowp, r) { void* ptr = rgba; SkRasterPipeline_<256> p; - p.append(SkRasterPipeline::load_8888, &ptr); - p.append(SkRasterPipeline::swap_rb); + p.append(SkRasterPipeline::load_bgra, &ptr); p.append(SkRasterPipeline::store_8888, &ptr); p.run(0,0,64); diff --git a/tools/picture_utils.cpp b/tools/picture_utils.cpp index 183e78ec81..93d598ddbd 100644 --- a/tools/picture_utils.cpp +++ b/tools/picture_utils.cpp @@ -89,17 +89,14 @@ namespace sk_tools { SkRasterPipeline_<256> p; switch (bitmap.colorType()) { case kRGBA_F16_SkColorType: p.append(SkRasterPipeline::load_f16, &src); break; - case kRGBA_8888_SkColorType: - case kBGRA_8888_SkColorType: p.append(SkRasterPipeline::load_8888, &src); break; + case kBGRA_8888_SkColorType: p.append(SkRasterPipeline::load_bgra, &src); break; + case kRGBA_8888_SkColorType: p.append(SkRasterPipeline::load_8888, &src); break; case kRGB_565_SkColorType: p.append(SkRasterPipeline::load_565, &src); break; default: SkASSERT(false); // DM doesn't support any other formats, does it? } if (bitmap.info().gammaCloseToSRGB()) { p.append_from_srgb(kUnpremul_SkAlphaType); } - if (bitmap.colorType() == kBGRA_8888_SkColorType) { - p.append(SkRasterPipeline::swap_rb); - } p.append(SkRasterPipeline::unpremul); p.append(SkRasterPipeline::clamp_0); p.append(SkRasterPipeline::clamp_1); |