0

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:
bungeman@chromium.org
2013-10-21 20:47:39 +00:00
parent f9e684382c
commit e593f8b12a
7 changed files with 25 additions and 136 deletions

@@ -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',