With the update of libpng to 1.6.22, we have the opportunity to take advantage of Arm NEON optimizations that improve decode time by ~30%.
These have been disabled on iOS GYP builds due to compile failures. A bit of discussion on the failures is below. We should fix these issues to improve png decode performance on iOS GYP.
"""
It appears that are arm/arm_init.c and arm/filter_neon_intrinsics.c are not compiled with the rest of the png sources.
[1/659] CC obj/third_party/libpng/libpng.pngrio.o
[2/659] CC obj/third_party/libpng/libpng.pngmem.o
[3/659] CC obj/third_party/libpng/libpng.pngget.o
[4/659] CC obj/third_party/libpng/libpng.pngwio.o
[5/659] CC obj/third_party/libpng/libpng.pngread.o
[6/659] CC obj/third_party/libpng/libpng.pngerror.o
[7/659] CC obj/third_party/libpng/libpng.pngtrans.o
[8/659] CC obj/third_party/libpng/libpng.pngwtran.o
[9/659] CC obj/third_party/libpng/libpng.pngset.o
[10/659] CC obj/third_party/libpng/libpng.pngpread.o
[11/659] CC obj/third_party/libpng/libpng.pngwrite.o
[12/659] CC obj/third_party/libpng/libpng.pngwutil.o
[13/659] CC obj/third_party/libpng/libpng.png.o
[14/659] CXX obj/third_party/skia/src/fonts/skia_library.SkRemotableFontMgr.o
[15/659] CXX obj/third_party/skia/src/opts/skia_opts_none.SkBlitRow_opts_none.o
[16/659] CXX obj/third_party/skia/src/opts/skia_opts_none.SkBlitMask_opts_none.o
[17/659] CC obj/third_party/libpng/libpng.pngrtran.o
[18/659] CC obj/third_party/libpng/libpng.pngrutil.o
[19/659] CXX obj/third_party/skia/src/ports/skia_library.SkTLS_pthread.o
[20/659] CXX
obj/third_party/skia/src/opts/skia_opts_none.SkBitmapProcState_opts_none.o
....
They are compiled on GN, which works fine.
[132/445] CC obj/third_party/libpng/libpng_sources/filter_neon_intrinsics.o
[135/445] CC obj/third_party/libpng/libpng_sources/arm_init.o
....
I am further confused by the compile output for ios gyp (with ARM disabled).
[9/958] CC obj/third_party/libpng/contrib/intel/libpng.intel_init.o
[10/958] CC obj/third_party/libpng/contrib/intel/libpng.filter_sse2_intrinsics.o
It's actually compiling the x86/64 optimizations (even though IOS is ARM?).
"""
Comment 1 by bugdroid1@chromium.org
, Jun 13 2016