86498fbfcb
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
132 lines
3.8 KiB
Python
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',
|
|
],
|
|
}],
|
|
],
|
|
},
|
|
},
|
|
],
|
|
}
|