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>
diff --git a/src/core/SkBlitter_Sprite.cpp b/src/core/SkBlitter_Sprite.cpp
index 20ec357..9b1ee29 100644
--- a/src/core/SkBlitter_Sprite.cpp
+++ b/src/core/SkBlitter_Sprite.cpp
@@ -122,8 +122,8 @@
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 @@
(!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 8887bc2..ff177d4 100644
--- a/src/core/SkColorSpaceXform.cpp
+++ b/src/core/SkColorSpaceXform.cpp
@@ -1173,16 +1173,16 @@
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 @@
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 2e710f5..4cfb05d 100644
--- a/src/core/SkColorSpaceXform_A2B.cpp
+++ b/src/core/SkColorSpaceXform_A2B.cpp
@@ -23,8 +23,7 @@
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 @@
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 b3a6a06..7859972 100644
--- a/src/core/SkConvertPixels.cpp
+++ b/src/core/SkConvertPixels.cpp
@@ -283,8 +283,7 @@
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 @@
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 bca23c6..0b55333 100644
--- a/src/core/SkModeColorFilter.cpp
+++ b/src/core/SkModeColorFilter.cpp
@@ -87,15 +87,17 @@
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 54ac589..e96d2f4 100644
--- a/src/core/SkXfermode.cpp
+++ b/src/core/SkXfermode.cpp
@@ -34,19 +34,14 @@
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 @@
}
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);
}