remove linear blending from SkWebpCodec
Change-Id: Ia4cf10ba999b48437491416b0fb21d7726d73b4f
Reviewed-on: https://skia-review.googlesource.com/133444
Commit-Queue: Mike Klein <mtklein@chromium.org>
Commit-Queue: Brian Osman <brianosman@google.com>
Auto-Submit: Mike Klein <mtklein@chromium.org>
Reviewed-by: Leon Scroggins <scroggo@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
diff --git a/src/codec/SkWebpCodec.cpp b/src/codec/SkWebpCodec.cpp
index 757cde5..2f9420b 100644
--- a/src/codec/SkWebpCodec.cpp
+++ b/src/codec/SkWebpCodec.cpp
@@ -369,7 +369,6 @@
// Requires that the src input be unpremultiplied (or opaque).
static void blend_line(SkColorType dstCT, void* dst,
SkColorType srcCT, const void* src,
- bool needsSrgbToLinear,
SkAlphaType dstAt,
bool srcHasAlpha,
int width) {
@@ -382,9 +381,6 @@
// Load the final dst.
p.append(load_dst, &dst_ctx);
- if (needsSrgbToLinear) {
- p.append(SkRasterPipeline::from_srgb);
- }
if (kUnpremul_SkAlphaType == dstAt) {
p.append(SkRasterPipeline::premul);
}
@@ -394,9 +390,6 @@
SkRasterPipeline::StockStage load_src;
pick_memory_stages(srcCT, &load_src, nullptr);
p.append(load_src, &src_ctx);
- if (needsSrgbToLinear) {
- p.append(SkRasterPipeline::from_srgb);
- }
if (srcHasAlpha) {
p.append(SkRasterPipeline::premul);
}
@@ -407,9 +400,6 @@
if (kUnpremul_SkAlphaType == dstAt) {
p.append(SkRasterPipeline::unpremul);
}
- if (needsSrgbToLinear) {
- p.append(SkRasterPipeline::to_srgb);
- }
p.append(store_dst, &dst_ctx);
p.run(0,0, width,1);
@@ -614,9 +604,6 @@
return kInvalidInput;
}
- const bool needsSrgbToLinear = dstInfo.gammaCloseToSRGB() &&
- options.fPremulBehavior == SkTransferFunctionBehavior::kRespect;
-
const size_t dstBpp = dstInfo.bytesPerPixel();
dst = SkTAddOffset<void>(dst, dstBpp * dstX + rowBytes * dstY);
const size_t srcRowBytes = config.output.u.RGBA.stride;
@@ -641,7 +628,7 @@
for (int y = 0; y < rowsDecoded; y++) {
this->applyColorXform(xformDst, xformSrc, scaledWidth, xformAlphaType);
if (blendWithPrevFrame) {
- blend_line(dstCT, dst, dstCT, xformDst, needsSrgbToLinear,
+ blend_line(dstCT, dst, dstCT, xformDst,
dstInfo.alphaType(), frame.has_alpha, scaledWidth);
dst = SkTAddOffset<void>(dst, rowBytes);
} else {
@@ -653,7 +640,7 @@
const uint8_t* src = config.output.u.RGBA.rgba;
for (int y = 0; y < rowsDecoded; y++) {
- blend_line(dstCT, dst, webpDst.colorType(), src, needsSrgbToLinear,
+ blend_line(dstCT, dst, webpDst.colorType(), src,
dstInfo.alphaType(), frame.has_alpha, scaledWidth);
src = SkTAddOffset<const uint8_t>(src, srcRowBytes);
dst = SkTAddOffset<void>(dst, rowBytes);