Update libwebp and resume testing scaled webp
libwebp has a fix for [1]. Update to the commit that contains the fix.
Update libwebp.gypi, corresponding to libwebp's latest makefile.
Turn back on DM testing for scaled webp, now that it should no longer
use uninitialized memory.
[1] https://code.google.com/p/webp/issues/detail?id=254
BUG=skia:4038
Committed: https://skia.googlesource.com/skia/+/0575d3e6c272744a66ab3281f9871366717df339
Review URL: https://codereview.chromium.org/1280073002
diff --git a/DEPS b/DEPS
index 742d1de..5645144 100644
--- a/DEPS
+++ b/DEPS
@@ -14,7 +14,8 @@
"third_party/externals/gyp" : "https://chromium.googlesource.com/external/gyp.git@08429da7955a98ef764fafa223dd7de73f654b2d",
"third_party/externals/harfbuzz": "https://skia.googlesource.com/third_party/harfbuzz.git@0.9.35",
"third_party/externals/jsoncpp" : "https://chromium.googlesource.com/external/jsoncpp/jsoncpp.git@1afff032c83e26ddf7f2776e8b43de5ad666c1fa",
- "third_party/externals/libwebp" : "https://chromium.googlesource.com/webm/libwebp.git@v0.4.3",
+ # Slightly ahead of v 0.4.3, to include the fix for skbug.com/4038
+ "third_party/externals/libwebp" : "https://chromium.googlesource.com/webm/libwebp.git@5ff0079ece626f122bfb8e33a5f92b5a68484176",
"third_party/externals/nanomsg" : "https://skia.googlesource.com/third_party/nanomsg.git@0.4-beta",
"third_party/externals/zlib" : "https://chromium.googlesource.com/chromium/src/third_party/zlib@4ba7cdd0e7bf49d671645264f839838fc56e1492",
# NOTE: If we update libpng, we may need to update the generated file at third_party/libpng/pnglibconf.h
diff --git a/dm/DM.cpp b/dm/DM.cpp
index 2a96a9e..e616c18 100644
--- a/dm/DM.cpp
+++ b/dm/DM.cpp
@@ -302,12 +302,6 @@
}
for (float scale : nativeScales) {
- if (scale != 1.0f && (path.endsWith(".webp") || path.endsWith(".WEBP"))) {
- // FIXME: skbug.com/4038 Scaling webp seems to leave some pixels uninitialized/
- // compute their colors based on uninitialized values.
- continue;
- }
-
for (CodecSrc::Mode mode : nativeModes) {
for (uint32_t i = 0; i < numColorTypes; i++) {
push_codec_src(path, mode, colorTypes[i], scale);
diff --git a/gyp/libwebp.gyp b/gyp/libwebp.gyp
index fc6f46c..2978cd9 100644
--- a/gyp/libwebp.gyp
+++ b/gyp/libwebp.gyp
@@ -66,18 +66,33 @@
],
'sources': [
'../third_party/externals/libwebp/src/dsp/alpha_processing.c',
+ '../third_party/externals/libwebp/src/dsp/alpha_processing_mips_dsp_r2.c',
'../third_party/externals/libwebp/src/dsp/alpha_processing_sse2.c',
+ '../third_party/externals/libwebp/src/dsp/alpha_processing_sse41.c',
'../third_party/externals/libwebp/src/dsp/cpu.c',
'../third_party/externals/libwebp/src/dsp/dec.c',
'../third_party/externals/libwebp/src/dsp/dec_clip_tables.c',
+ '../third_party/externals/libwebp/src/dsp/dec_mips32.c',
+ '../third_party/externals/libwebp/src/dsp/dec_mips_dsp_r2.c',
'../third_party/externals/libwebp/src/dsp/dec_sse2.c',
+ '../third_party/externals/libwebp/src/dsp/dec_sse41.c',
'../third_party/externals/libwebp/src/dsp/enc.c',
'../third_party/externals/libwebp/src/dsp/enc_sse2.c',
+ '../third_party/externals/libwebp/src/dsp/filters.c',
+ '../third_party/externals/libwebp/src/dsp/filters_mips_dsp_r2.c',
+ '../third_party/externals/libwebp/src/dsp/filters_sse2.c',
'../third_party/externals/libwebp/src/dsp/lossless.c',
+ '../third_party/externals/libwebp/src/dsp/lossless_mips_dsp_r2.c',
'../third_party/externals/libwebp/src/dsp/lossless_sse2.c',
+ '../third_party/externals/libwebp/src/dsp/rescaler.c',
+ '../third_party/externals/libwebp/src/dsp/rescaler_mips32.c',
+ '../third_party/externals/libwebp/src/dsp/rescaler_mips_dsp_r2.c',
'../third_party/externals/libwebp/src/dsp/upsampling.c',
+ '../third_party/externals/libwebp/src/dsp/upsampling_mips_dsp_r2.c',
'../third_party/externals/libwebp/src/dsp/upsampling_sse2.c',
'../third_party/externals/libwebp/src/dsp/yuv.c',
+ '../third_party/externals/libwebp/src/dsp/yuv_mips32.c',
+ '../third_party/externals/libwebp/src/dsp/yuv_mips_dsp_r2.c',
'../third_party/externals/libwebp/src/dsp/yuv_sse2.c',
],
'cflags': [ '-w' ],
@@ -108,6 +123,7 @@
'../third_party/externals/libwebp/src/dsp/dec_neon.c',
'../third_party/externals/libwebp/src/dsp/enc_neon.c',
'../third_party/externals/libwebp/src/dsp/lossless_neon.c',
+ '../third_party/externals/libwebp/src/dsp/lossless_enc_neon.c',
'../third_party/externals/libwebp/src/dsp/upsampling_neon.c',
],
# behavior similar dsp_neon.c.neon in an Android.mk
@@ -121,6 +137,34 @@
],
},
{
+ 'target_name': 'libwebp_dsp_enc',
+ 'type': 'static_library',
+ 'includes': [
+ 'libwebp_skia.gypi',
+ ],
+ 'include_dirs': [
+ '../third_party/externals/libwebp',
+ ],
+ 'sources': [
+ '../third_party/externals/libwebp/src/dsp/argb.c',
+ '../third_party/externals/libwebp/src/dsp/argb_mips_dsp_r2.c',
+ '../third_party/externals/libwebp/src/dsp/argb_sse2.c',
+ '../third_party/externals/libwebp/src/dsp/cost.c',
+ '../third_party/externals/libwebp/src/dsp/cost_mips32.c',
+ '../third_party/externals/libwebp/src/dsp/cost_mips_dsp_r2.c',
+ '../third_party/externals/libwebp/src/dsp/cost_sse2.c',
+ '../third_party/externals/libwebp/src/dsp/enc_avx2.c',
+ '../third_party/externals/libwebp/src/dsp/enc_mips32.c',
+ '../third_party/externals/libwebp/src/dsp/enc_mips_dsp_r2.c',
+ '../third_party/externals/libwebp/src/dsp/enc_sse41.c',
+ '../third_party/externals/libwebp/src/dsp/lossless_enc.c',
+ '../third_party/externals/libwebp/src/dsp/lossless_enc_mips32.c',
+ '../third_party/externals/libwebp/src/dsp/lossless_enc_mips_dsp_r2.c',
+ '../third_party/externals/libwebp/src/dsp/lossless_enc_sse2.c',
+ '../third_party/externals/libwebp/src/dsp/lossless_enc_sse41.c',
+ ],
+ },
+ {
'target_name': 'libwebp_enc',
'type': 'static_library',
'includes': [
@@ -129,6 +173,9 @@
'include_dirs': [
'../third_party/externals/libwebp',
],
+ 'dependencies' : [
+ 'libwebp_dsp_enc',
+ ],
'sources': [
'../third_party/externals/libwebp/src/enc/alpha.c',
'../third_party/externals/libwebp/src/enc/analysis.c',
@@ -139,8 +186,12 @@
'../third_party/externals/libwebp/src/enc/frame.c',
'../third_party/externals/libwebp/src/enc/histogram.c',
'../third_party/externals/libwebp/src/enc/iterator.c',
+ '../third_party/externals/libwebp/src/enc/near_lossless.c',
'../third_party/externals/libwebp/src/enc/picture.c',
'../third_party/externals/libwebp/src/enc/picture_csp.c',
+ '../third_party/externals/libwebp/src/enc/picture_psnr.c',
+ '../third_party/externals/libwebp/src/enc/picture_rescale.c',
+ '../third_party/externals/libwebp/src/enc/picture_tools.c',
'../third_party/externals/libwebp/src/enc/quant.c',
'../third_party/externals/libwebp/src/enc/syntax.c',
'../third_party/externals/libwebp/src/enc/token.c',