Improve Skia configuration.
This is the Chromium side of https://codereview.chromium.org/19808007 . R=djsollen@google.com Review URL: https://codereview.chromium.org/19477005 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@229905 0039d316-1c4b-4281-b951-d872f2087c98
This commit is contained in:
@@ -183,19 +183,6 @@ SK_API void SkDebugf_FileLine(const char* file, int line, bool fatal,
|
||||
|
||||
#define SK_BUILD_FOR_WIN
|
||||
|
||||
// VC8 doesn't support stdint.h, so we define those types here.
|
||||
#define SK_IGNORE_STDINT_DOT_H
|
||||
typedef signed char int8_t;
|
||||
typedef unsigned char uint8_t;
|
||||
typedef short int16_t;
|
||||
typedef unsigned short uint16_t;
|
||||
typedef int int32_t;
|
||||
typedef unsigned uint32_t;
|
||||
|
||||
// VC doesn't support __restrict__, so make it a NOP.
|
||||
#undef SK_RESTRICT
|
||||
#define SK_RESTRICT
|
||||
|
||||
// Skia uses this deprecated bzero function to fill zeros into a string.
|
||||
#define bzero(str, len) memset(str, 0, len)
|
||||
|
||||
|
@@ -1,88 +0,0 @@
|
||||
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
#include "third_party/skia/include/core/SkThread.h"
|
||||
|
||||
#include <new>
|
||||
|
||||
#include "base/atomicops.h"
|
||||
#include "base/basictypes.h"
|
||||
#include "base/logging.h"
|
||||
#include "base/synchronization/lock.h"
|
||||
|
||||
/** Adds one to the int specified by the address (in a thread-safe manner), and
|
||||
returns the previous value.
|
||||
No additional memory barrier is required.
|
||||
This must act as a compiler barrier.
|
||||
*/
|
||||
int32_t sk_atomic_inc(int32_t* addr) {
|
||||
// sk_atomic_inc is expected to return the old value,
|
||||
// Barrier_AtomicIncrement returns the new value.
|
||||
return base::subtle::NoBarrier_AtomicIncrement(addr, 1) - 1;
|
||||
}
|
||||
|
||||
/* Subtracts one from the int specified by the address (in a thread-safe
|
||||
manner), and returns the previous value.
|
||||
Expected to act as a release (SL/S) memory barrier and a compiler barrier.
|
||||
*/
|
||||
int32_t sk_atomic_dec(int32_t* addr) {
|
||||
// sk_atomic_dec is expected to return the old value,
|
||||
// Barrier_AtomicIncrement returns the new value.
|
||||
return base::subtle::Barrier_AtomicIncrement(addr, -1) + 1;
|
||||
}
|
||||
/** If sk_atomic_dec does not act as an aquire (L/SL) barrier, this is expected
|
||||
to act as an aquire (L/SL) memory barrier and as a compiler barrier.
|
||||
*/
|
||||
void sk_membar_aquire__after_atomic_dec() { }
|
||||
|
||||
/** Adds one to the int specified by the address iff the int specified by the
|
||||
address is not zero (in a thread-safe manner), and returns the previous
|
||||
value.
|
||||
No additional memory barrier is required.
|
||||
This must act as a compiler barrier.
|
||||
*/
|
||||
int32_t sk_atomic_conditional_inc(int32_t* addr) {
|
||||
int32_t value = *addr;
|
||||
|
||||
while (true) {
|
||||
if (value == 0) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
int32_t before;
|
||||
before = base::subtle::Acquire_CompareAndSwap(addr, value, value + 1);
|
||||
|
||||
if (before == value) {
|
||||
return value;
|
||||
} else {
|
||||
value = before;
|
||||
}
|
||||
}
|
||||
}
|
||||
/** If sk_atomic_conditional_inc does not act as an aquire (L/SL) barrier, this
|
||||
is expected to act as an aquire (L/SL) memory barrier and as a compiler
|
||||
barrier.
|
||||
*/
|
||||
void sk_membar_aquire__after_atomic_conditional_inc() { }
|
||||
|
||||
SkMutex::SkMutex() {
|
||||
COMPILE_ASSERT(sizeof(base::Lock) <= sizeof(fStorage), Lock_is_too_big_for_SkMutex);
|
||||
base::Lock* lock = reinterpret_cast<base::Lock*>(fStorage);
|
||||
new(lock) base::Lock();
|
||||
}
|
||||
|
||||
SkMutex::~SkMutex() {
|
||||
base::Lock* lock = reinterpret_cast<base::Lock*>(fStorage);
|
||||
lock->~Lock();
|
||||
}
|
||||
|
||||
void SkMutex::acquire() {
|
||||
base::Lock* lock = reinterpret_cast<base::Lock*>(fStorage);
|
||||
lock->Acquire();
|
||||
}
|
||||
|
||||
void SkMutex::release() {
|
||||
base::Lock* lock = reinterpret_cast<base::Lock*>(fStorage);
|
||||
lock->Release();
|
||||
}
|
@@ -93,7 +93,6 @@
|
||||
'include_dirs': [
|
||||
'..',
|
||||
'config',
|
||||
'../third_party/skia/include/config',
|
||||
'../third_party/skia/include/core',
|
||||
],
|
||||
'conditions': [
|
||||
|
@@ -20,10 +20,6 @@
|
||||
],
|
||||
},
|
||||
|
||||
'include_dirs': [
|
||||
'..',
|
||||
],
|
||||
|
||||
'sources': [
|
||||
'ext/analysis_canvas.cc',
|
||||
'ext/analysis_canvas.h',
|
||||
@@ -48,7 +44,6 @@
|
||||
'ext/lazy_pixel_ref.h',
|
||||
'ext/lazy_pixel_ref_utils.cc',
|
||||
'ext/lazy_pixel_ref_utils.h',
|
||||
'ext/SkThread_chrome.cc',
|
||||
'ext/opacity_draw_filter.cc',
|
||||
'ext/opacity_draw_filter.h',
|
||||
'ext/paint_simplifier.cc',
|
||||
@@ -83,14 +78,6 @@
|
||||
'ext/vector_platform_device_skia.h',
|
||||
],
|
||||
'conditions': [
|
||||
# For POSIX platforms, prefer the Mutex implementation provided by Skia
|
||||
# since it does not generate static initializers.
|
||||
# TODO: should check if SK_USE_POSIX_THREADS is defined instead
|
||||
[ 'OS == "android" or OS == "linux" or OS == "mac" or OS == "ios"', {
|
||||
'sources!': [
|
||||
'ext/SkThread_chrome.cc',
|
||||
],
|
||||
}],
|
||||
[ 'OS == "android" and enable_printing == 0', {
|
||||
'sources!': [
|
||||
'ext/skia_utils_base.cc',
|
||||
@@ -105,11 +92,6 @@
|
||||
'skia_chrome_opts',
|
||||
],
|
||||
}],
|
||||
[ 'OS == "win"', {
|
||||
'sources!': [
|
||||
'ext/SkThread_chrome.cc',
|
||||
],
|
||||
}],
|
||||
# TODO(scottmg): http://crbug.com/177306
|
||||
['clang==1', {
|
||||
'xcode_settings': {
|
||||
|
@@ -5,6 +5,11 @@
|
||||
# This gypi file handles the removal of platform-specific files from the
|
||||
# Skia build.
|
||||
{
|
||||
'include_dirs': [
|
||||
'..',
|
||||
'config',
|
||||
],
|
||||
|
||||
'conditions': [
|
||||
[ 'OS != "android"', {
|
||||
'sources/': [
|
||||
@@ -29,5 +34,12 @@
|
||||
}],
|
||||
],
|
||||
|
||||
'direct_dependent_settings': {
|
||||
'include_dirs': [
|
||||
'..',
|
||||
'config',
|
||||
],
|
||||
},
|
||||
|
||||
'msvs_disabled_warnings': [4244, 4267, 4341, 4345, 4390, 4554, 4748, 4800],
|
||||
}
|
||||
|
@@ -149,9 +149,6 @@
|
||||
'../third_party/skia/include/utils/SkProxyCanvas.h',
|
||||
],
|
||||
'include_dirs': [
|
||||
'..',
|
||||
'config',
|
||||
'../third_party/skia/include/config',
|
||||
'../third_party/skia/include/core',
|
||||
'../third_party/skia/include/effects',
|
||||
'../third_party/skia/include/images',
|
||||
@@ -222,7 +219,7 @@
|
||||
|
||||
# For POSIX platforms, prefer the Mutex implementation provided by Skia
|
||||
# since it does not generate static initializers.
|
||||
[ 'OS == "android" or OS == "linux" or OS == "mac" or OS == "ios"', {
|
||||
[ 'os_posix == 1', {
|
||||
'defines+': [
|
||||
'SK_USE_POSIX_THREADS',
|
||||
],
|
||||
@@ -444,8 +441,6 @@
|
||||
#temporary until we can hide SkFontHost
|
||||
'../third_party/skia/src/core',
|
||||
|
||||
'config',
|
||||
'../third_party/skia/include/config',
|
||||
'../third_party/skia/include/core',
|
||||
'../third_party/skia/include/effects',
|
||||
'../third_party/skia/include/pdf',
|
||||
|
@@ -27,9 +27,10 @@
|
||||
{
|
||||
'target_name': 'skia_opts',
|
||||
'type': 'static_library',
|
||||
'includes': [
|
||||
'skia_common.gypi',
|
||||
],
|
||||
'include_dirs': [
|
||||
'config',
|
||||
'../third_party/skia/include/config',
|
||||
'../third_party/skia/include/core',
|
||||
'../third_party/skia/src/core',
|
||||
'../third_party/skia/src/opts',
|
||||
@@ -138,10 +139,10 @@
|
||||
{
|
||||
'target_name': 'skia_opts_ssse3',
|
||||
'type': 'static_library',
|
||||
'includes': [
|
||||
'skia_common.gypi',
|
||||
],
|
||||
'include_dirs': [
|
||||
'..',
|
||||
'config',
|
||||
'../third_party/skia/include/config',
|
||||
'../third_party/skia/include/core',
|
||||
'../third_party/skia/src/core',
|
||||
],
|
||||
@@ -176,10 +177,10 @@
|
||||
{
|
||||
'target_name': 'skia_opts_none',
|
||||
'type': 'static_library',
|
||||
'includes': [
|
||||
'skia_common.gypi',
|
||||
],
|
||||
'include_dirs': [
|
||||
'..',
|
||||
'config',
|
||||
'../third_party/skia/include/config',
|
||||
'../third_party/skia/include/core',
|
||||
'../third_party/skia/src/core',
|
||||
],
|
||||
@@ -202,9 +203,10 @@
|
||||
{
|
||||
'target_name': 'skia_opts_neon',
|
||||
'type': 'static_library',
|
||||
'includes': [
|
||||
'skia_common.gypi',
|
||||
],
|
||||
'include_dirs': [
|
||||
'..',
|
||||
'config',
|
||||
'../third_party/skia/include/core',
|
||||
'../third_party/skia/src/core',
|
||||
'../third_party/skia/src/opts',
|
||||
|
Reference in New Issue
Block a user