skia2/gyp/core.gyp
mtklein 86498fbfcb Revert of Move CPU feature detection to its own file. (patchset #7 id:120001 of https://codereview.chromium.org/1890483002/ )
Reason for revert:
many unexpected GM diffs across GPU+CPU configs on Windows (hopefully just text masks on GPU?).   seems like we pick a different srcover variant in some places.

Original issue's description:
> Move CPU feature detection to its own file.
>
>    - Moves CPU feature detection to its own file.
>    - Cleans up some redundant feature detection scattered around core/ and opts/.
>    - Can now detect a few new CPU features:
>        * F16C     -> Intel f16<->f32 instructions, added between AVX and AVX2
>        * FMA      -> Intel FMA instructions, added at the same time as AVX2
>        * VFP_FP16 -> ARM f16<->f32 instructions, quite common
>        * NEON_FMA -> ARM FMA instructions, also quite common
>        * SSE and SSE3... why not?
>
> This new internal API makes it very cheap to do fine-grained runtime CPU
> feature detection.  Redundant calls to SkCpu::Supports() should be eliminated
> and it's hoistable out of loops.  It compiles away entirely when we have the
> appropriate instructions available at compile time.
>
> This means we can call it to guard even a little snippet of 1 or 2 instructions
> right where needed and let inlining hoist the check (if any at all) up to
> somewhere that doesn't hurt performance.  I've explained how I made this work
> in the private section of the new header.
>
> Once this lands and bakes a bit, I'll start following up with CLs to use it more
> and to add a bunch of those little 1-2 instruction snippets we've been wanting,
> e.g. cvtps2ph, cvtph2ps, ptest, pmulld, pmovzxbd, blendvps, pshufb, roundps
> (for floor) on x86, and vcvt.f32.f16, vcvt.f16.f32 on ARM.
>
> BUG=skia:
> GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1890483002
> CQ_EXTRA_TRYBOTS=client.skia:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD-Trybot
>
> Committed: https://skia.googlesource.com/skia/+/872ea29357439f05b1f6995dd300fc054733e607

TBR=fmalita@chromium.org,herb@google.com,reed@google.com,mtklein@chromium.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=skia:

Review URL: https://codereview.chromium.org/1892643003
2016-04-15 08:40:23 -07:00

132 lines
3.8 KiB
Python

# Copyright 2015 Google Inc.
#
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
# Core Skia library code.
{
'targets': [
{
'target_name': 'core',
'product_name': 'skia_core',
'type': 'static_library',
'standalone_static_library': 1,
'msvs_guid': 'B7760B5E-BFA8-486B-ACFD-49E3A6DE8E76',
'includes': [
'core.gypi',
],
'include_dirs': [
'../include/c',
'../include/config',
'../include/core',
'../include/pathops',
'../include/ports',
'../include/private',
'../include/utils',
'../include/images',
'../src/core',
'../src/sfnt',
'../src/image',
'../src/opts',
'../src/utils',
],
'sources': [
'core.gypi', # Makes the gypi appear in IDEs (but does not modify the build).
],
'msvs_disabled_warnings': [4244, 4267,4345, 4390, 4554, 4800],
'conditions': [
[ 'skia_os in ["linux", "freebsd", "openbsd", "solaris", "chromeos"]', {
'link_settings': {
'libraries': [
'-lpthread',
],
},
}],
[ 'skia_os == "mac"', {
'include_dirs': [
'../include/utils/mac',
],
'sources': [
'../include/utils/mac/SkCGUtils.h',
],
'link_settings': {
'libraries': [
'$(SDKROOT)/System/Library/Frameworks/ApplicationServices.framework',
],
},
}],
[ 'skia_os == "ios"', {
'include_dirs': [
'../include/utils/ios',
],
'sources': [
'../include/utils/mac/SkCGUtils.h',
],
'link_settings': {
'libraries': [
'$(SDKROOT)/System/Library/Frameworks/CoreFoundation.framework',
'$(SDKROOT)/System/Library/Frameworks/CoreGraphics.framework',
'$(SDKROOT)/System/Library/Frameworks/CoreText.framework',
'$(SDKROOT)/System/Library/Frameworks/UIKit.framework',
'$(SDKROOT)/System/Library/Frameworks/Foundation.framework',
'$(SDKROOT)/System/Library/Frameworks/QuartzCore.framework',
'$(SDKROOT)/System/Library/Frameworks/OpenGLES.framework',
'$(SDKROOT)/System/Library/Frameworks/ImageIO.framework',
'$(SDKROOT)/System/Library/Frameworks/MobileCoreServices.framework',
],
},
}],
[ 'skia_os == "win"', {
'include_dirs': [
'config/win',
],
}],
[ 'skia_os == "android"', {
'dependencies': [
'android_deps.gyp:cpu_features',
],
}],
[ 'skia_arch_type == "arm"', {
# The code in SkUtilsArm.cpp can be used on an ARM-based Linux system, not only Android.
'sources': [
'../src/core/SkUtilsArm.cpp',
'../src/core/SkUtilsArm.h',
],
}],
['skia_gpu == 1', {
'include_dirs': [
'../include/gpu',
'../src/gpu',
],
}],
],
'direct_dependent_settings': {
'include_dirs': [
'../include/c',
'../include/config',
'../include/core',
'../include/pathops',
],
'conditions': [
[ 'skia_os == "mac"', {
'include_dirs': [
'../include/utils/mac',
],
}],
[ 'skia_os == "ios"', {
'include_dirs': [
'../include/utils/ios',
],
}],
[ 'skia_os == "win"', {
'include_dirs': [
'config/win',
],
}],
],
},
},
],
}