aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--src/codec/SkWebpCodec.cpp9
-rw-r--r--src/core/SkBlitter_Sprite.cpp7
-rw-r--r--src/core/SkColorSpaceXform.cpp7
-rw-r--r--src/core/SkColorSpaceXform_A2B.cpp6
-rw-r--r--src/core/SkConvertPixels.cpp6
-rw-r--r--src/core/SkModeColorFilter.cpp10
-rw-r--r--src/core/SkXfermode.cpp24
-rw-r--r--src/images/SkImageEncoderFns.h7
-rw-r--r--tests/SkRasterPipelineTest.cpp3
-rw-r--r--tools/picture_utils.cpp7
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);