Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(176)

Unified Diff: src/core/SkUtilsArm.cpp

Issue 506033003: Always use cpu-features library on android. (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/core/SkUtilsArm.cpp
diff --git a/src/core/SkUtilsArm.cpp b/src/core/SkUtilsArm.cpp
index 58cf1157c307c604f59a16f43a923c87d309a809..1ff5bf0d652a15c7cee6d9955ce9e83b8578f146 100644
--- a/src/core/SkUtilsArm.cpp
+++ b/src/core/SkUtilsArm.cpp
@@ -16,73 +16,24 @@
#include <string.h>
#include <pthread.h>
-// Set USE_ANDROID_NDK_CPU_FEATURES to use the Android NDK's
-// cpu-features helper library to detect NEON at runtime. See
-// http://crbug.com/164154 to see why this is needed in Chromium
-// for Android.
-#if !defined(USE_ANDROID_NDK_CPU_FEATURES)
-# if defined(SK_BUILD_FOR_ANDROID)
-# define USE_ANDROID_NDK_CPU_FEATURES 1
-# else
-# define USE_ANDROID_NDK_CPU_FEATURES 0
-# endif
-#endif
-
-#if USE_ANDROID_NDK_CPU_FEATURES
+#if SK_BUILD_FOR_ANDROID
# include <cpu-features.h>
#endif
-// Set NEON_DEBUG to 1 to allow debugging of the CPU features probing.
-// For now, we always set it for SK_DEBUG builds.
-#ifdef SK_DEBUG
-# define NEON_DEBUG 1
-#else
-# define NEON_DEBUG 0
-#endif
-
-#if NEON_DEBUG
-# ifdef SK_BUILD_FOR_ANDROID
- // used to declare PROP_VALUE_MAX and __system_property_get()
-# include <sys/system_properties.h>
-# endif
-#endif
-
// A function used to determine at runtime if the target CPU supports
// the ARM NEON instruction set. This implementation is Linux-specific.
static bool sk_cpu_arm_check_neon(void) {
+ // If we fail any of the following, assume we don't have NEON instructions
+ // This allows us to return immediately in case of error.
bool result = false;
-#if NEON_DEBUG
- // Allow forcing the mode through the environment during debugging.
-# ifdef SK_BUILD_FOR_ANDROID
- // On Android, we use a system property
-# define PROP_NAME "debug.skia.arm_neon_mode"
- char prop[PROP_VALUE_MAX];
- if (__system_property_get(PROP_NAME, prop) > 0) {
-# else
-# define PROP_NAME "SKIA_ARM_NEON_MODE"
- // On ARM Linux, we use an environment variable
- const char* prop = getenv(PROP_NAME);
- if (prop != NULL) {
-# endif
- SkDebugf("%s: %s", PROP_NAME, prop);
- if (!strcmp(prop, "1")) {
- SkDebugf("Forcing ARM Neon mode to full!\n");
- return true;
- }
- if (!strcmp(prop, "0")) {
- SkDebugf("Disabling ARM NEON mode\n");
- return false;
- }
- }
- SkDebugf("Running dynamic CPU feature detection\n");
-#endif
-
-#if USE_ANDROID_NDK_CPU_FEATURES
+// Use the Android NDK's cpu-features helper library to detect NEON at runtime.
+// See http://crbug.com/164154 to see why this is needed in Chromium for Android.
+#ifdef SK_BUILD_FOR_ANDROID
result = (android_getCpuFeatures() & ANDROID_CPU_ARM_FEATURE_NEON) != 0;
-#else // USE_ANDROID_NDK_CPU_FEATURES
+#else // SK_BUILD_FOR_ANDROID
// There is no user-accessible CPUID instruction on ARM that we can use.
// Instead, we must parse /proc/cpuinfo and look for the 'neon' feature.
@@ -103,10 +54,6 @@ static bool sk_cpu_arm_check_neon(void) {
*/
char buffer[4096];
- // If we fail any of the following, assume we don't have NEON instructions
- // This allows us to return immediately in case of error.
- result = false;
-
do {
// open /proc/cpuinfo
int fd = TEMP_FAILURE_RETRY(open("/proc/cpuinfo", O_RDONLY));
@@ -173,12 +120,12 @@ static bool sk_cpu_arm_check_neon(void) {
} while (0);
-#endif // USE_ANDROID_NDK_CPU_FEATURES
+#endif // SK_BUILD_FOR_ANDROID
if (result) {
- SkDebugf("Device supports ARM NEON instructions!\n");
+ SkDEBUGF(("Device supports ARM NEON instructions!\n"));
} else {
- SkDebugf("Device does NOT support ARM NEON instructions!\n");
+ SkDEBUGF(("Device does NOT support ARM NEON instructions!\n"));
}
return result;
}
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698