GN: turn on libpng SSE2 filters
authorMike Klein <mtklein@chromium.org>
Mon, 7 Nov 2016 21:56:53 +0000 (16:56 -0500)
committerMike Klein <mtklein@chromium.org>
Mon, 7 Nov 2016 22:36:42 +0000 (22:36 +0000)
I was profiling and remembered GN hasn't turned on much CPU-specific code.  I looked at zlib, then libpng, then libjpeg-turbo:

  - zlib was easy but not useful.  No routine we use in decoding changes significantly.
  - libpng was easy and useful, and we were already using NEON filters on ARM.
  - libjpeg-turbo requires yasm and is annoying.

BUG=skia:5875

GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=4531

Change-Id: Ie072a457da41ee6538eebacb5eb5dbe5a6eb585e
Reviewed-on: https://skia-review.googlesource.com/4531
Commit-Queue: Mike Klein <mtklein@chromium.org>
Reviewed-by: Matt Sarett <msarett@google.com>
third_party/libpng/BUILD.gn

index 2e3c01c..3e97f55 100644 (file)
@@ -17,6 +17,7 @@ if (skia_use_system_libpng) {
   third_party("libpng") {
     public_include_dirs = [ "." ]
 
+    defines = []
     deps = [
       "//third_party/zlib",
     ]
@@ -44,5 +45,13 @@ if (skia_use_system_libpng) {
         "arm/filter_neon_intrinsics.c",
       ]
     }
+
+    if (current_cpu == "x86" || current_cpu == "x64") {
+      defines += [ "PNG_INTEL_SSE" ]
+      sources += [
+        "contrib/intel/filter_sse2_intrinsics.c",
+        "contrib/intel/intel_init.c",
+      ]
+    }
   }
 }