diff options
Diffstat (limited to 'skia/config')
-rw-r--r-- | skia/config/SkUserConfig.h | 268 |
1 files changed, 268 insertions, 0 deletions
diff --git a/skia/config/SkUserConfig.h b/skia/config/SkUserConfig.h new file mode 100644 index 0000000000..2f13fda7b5 --- /dev/null +++ b/skia/config/SkUserConfig.h @@ -0,0 +1,268 @@ +/* + * Copyright (C) 2006 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef SKIA_CONFIG_SKUSERCONFIG_H_ +#define SKIA_CONFIG_SKUSERCONFIG_H_ + +/* SkTypes.h, the root of the public header files, does the following trick: + + #include <SkPreConfig.h> + #include <SkUserConfig.h> + #include <SkPostConfig.h> + + SkPreConfig.h runs first, and it is responsible for initializing certain + skia defines. + + SkPostConfig.h runs last, and its job is to just check that the final + defines are consistent (i.e. that we don't have mutually conflicting + defines). + + SkUserConfig.h (this file) runs in the middle. It gets to change or augment + the list of flags initially set in preconfig, and then postconfig checks + that everything still makes sense. + + Below are optional defines that add, subtract, or change default behavior + in Skia. Your port can locally edit this file to enable/disable flags as + you choose, or these can be delared on your command line (i.e. -Dfoo). + + By default, this include file will always default to having all of the flags + commented out, so including it will have no effect. +*/ + +/////////////////////////////////////////////////////////////////////////////// + +/* Skia has lots of debug-only code. Often this is just null checks or other + parameter checking, but sometimes it can be quite intrusive (e.g. check that + each 32bit pixel is in premultiplied form). This code can be very useful + during development, but will slow things down in a shipping product. + + By default, these mutually exclusive flags are defined in SkPreConfig.h, + based on the presence or absence of NDEBUG, but that decision can be changed + here. + */ +// #define SK_DEBUG +// #define SK_RELEASE + +// #ifdef DCHECK_ALWAYS_ON +// #undef SK_RELEASE +// #define SK_DEBUG +// #endif + +/* If, in debugging mode, Skia needs to stop (presumably to invoke a debugger) + it will call SK_CRASH(). If this is not defined it, it is defined in + SkPostConfig.h to write to an illegal address + */ +// #define SK_CRASH() *(int *)(uintptr_t)0 = 0 + +/* preconfig will have attempted to determine the endianness of the system, + but you can change these mutually exclusive flags here. + */ +// #define SK_CPU_BENDIAN +// #define SK_CPU_LENDIAN + +/* If zlib is available and you want to support the flate compression + algorithm (used in PDF generation), define SK_ZLIB_INCLUDE to be the + include path. + */ +// #define SK_ZLIB_INCLUDE <zlib.h> + +/* Define this to allow PDF scalars above 32k. The PDF/A spec doesn't allow + them, but modern PDF interpreters should handle them just fine. + */ +// #define SK_ALLOW_LARGE_PDF_SCALARS + +/* Define this to provide font subsetter for font subsetting when generating + PDF documents. + */ +// #define SK_SFNTLY_SUBSETTER \ +// "third_party/sfntly/src/cpp/src/sample/chromium/font_subsetter.h" + +/* To write debug messages to a console, skia will call SkDebugf(...) following + printf conventions (e.g. const char* format, ...). If you want to redirect + this to something other than printf, define yours here + */ +// #define SkDebugf(...) MyFunction(__VA_ARGS__) + +/* If SK_DEBUG is defined, then you can optionally define SK_SUPPORT_UNITTEST + which will run additional self-tests at startup. These can take a long time, + so this flag is optional. + */ +#ifdef SK_DEBUG +#define SK_SUPPORT_UNITTEST +#endif + +/* If cross process SkPictureImageFilters are not explicitly enabled then + they are always disabled. + */ +#ifndef SK_ALLOW_CROSSPROCESS_PICTUREIMAGEFILTERS +#ifndef SK_DISALLOW_CROSSPROCESS_PICTUREIMAGEFILTERS +#define SK_DISALLOW_CROSSPROCESS_PICTUREIMAGEFILTERS +#endif +#endif + +/* If your system embeds skia and has complex event logging, define this + symbol to name a file that maps the following macros to your system's + equivalents: + SK_TRACE_EVENT0(event) + SK_TRACE_EVENT1(event, name1, value1) + SK_TRACE_EVENT2(event, name1, value1, name2, value2) + src/utils/SkDebugTrace.h has a trivial implementation that writes to + the debug output stream. If SK_USER_TRACE_INCLUDE_FILE is not defined, + SkTrace.h will define the above three macros to do nothing. +*/ +#undef SK_USER_TRACE_INCLUDE_FILE + +// ===== Begin Chrome-specific definitions ===== + +#define SK_SCALAR_IS_FLOAT +#undef SK_SCALAR_IS_FIXED + +#define SK_MSCALAR_IS_FLOAT +#undef SK_MSCALAR_IS_DOUBLE + +#define GR_MAX_OFFSCREEN_AA_DIM 512 + +// Log the file and line number for assertions. +#define SkDebugf(...) SkDebugf_FileLine(__FILE__, __LINE__, false, __VA_ARGS__) +SK_API void SkDebugf_FileLine(const char* file, + int line, + bool fatal, + const char* format, + ...); + +// Marking the debug print as "fatal" will cause a debug break, so we don't need +// a separate crash call here. +#define SK_DEBUGBREAK(cond) \ + do { \ + if (!(cond)) { \ + SkDebugf_FileLine(__FILE__, __LINE__, true, \ + "%s:%d: failed assertion \"%s\"\n", __FILE__, \ + __LINE__, #cond); \ + } \ + } while (false) + +#if !defined(ANDROID) // On Android, we use the skia default settings. +#define SK_A32_SHIFT 24 +#define SK_R32_SHIFT 16 +#define SK_G32_SHIFT 8 +#define SK_B32_SHIFT 0 +#endif + +#if defined(SK_BUILD_FOR_WIN32) + +#define SK_BUILD_FOR_WIN + +// Skia uses this deprecated bzero function to fill zeros into a string. +#define bzero(str, len) memset(str, 0, len) + +#elif defined(SK_BUILD_FOR_MAC) + +#define SK_CPU_LENDIAN +#undef SK_CPU_BENDIAN + +#elif defined(SK_BUILD_FOR_UNIX) || defined(SK_BUILD_FOR_ANDROID) + +// Prefer FreeType's emboldening algorithm to Skia's +// TODO: skia used to just use hairline, but has improved since then, so +// we should revisit this choice... +#define SK_USE_FREETYPE_EMBOLDEN + +#if defined(SK_BUILD_FOR_UNIX) && defined(SK_CPU_BENDIAN) +// Above we set the order for ARGB channels in registers. I suspect that, on +// big endian machines, you can keep this the same and everything will work. +// The in-memory order will be different, of course, but as long as everything +// is reading memory as words rather than bytes, it will all work. However, if +// you find that colours are messed up I thought that I would leave a helpful +// locator for you. Also see the comments in +// base/gfx/bitmap_platform_device_linux.h +#error Read the comment at this location +#endif + +#endif + +// The default crash macro writes to badbeef which can cause some strange +// problems. Instead, pipe this through to the logging function as a fatal +// assertion. +#define SK_CRASH() SkDebugf_FileLine(__FILE__, __LINE__, true, "SK_CRASH") + +// These flags are no longer defined in Skia, but we have them (temporarily) +// until we update our call-sites (typically these are for API changes). +// +// Remove these as we update our sites. +// +#ifndef SK_SUPPORT_LEGACY_GETTOPDEVICE +#define SK_SUPPORT_LEGACY_GETTOPDEVICE +#endif + +#ifndef SK_SUPPORT_LEGACY_GETDEVICE +#define SK_SUPPORT_LEGACY_GETDEVICE +#endif + +// Workaround for poor anisotropic mipmap quality, +// pending Skia ripmap support. +// (https://bugs.chromium.org/p/skia/issues/detail?id=4863) +#ifndef SK_SUPPORT_LEGACY_ANISOTROPIC_MIPMAP_SCALE +#define SK_SUPPORT_LEGACY_ANISOTROPIC_MIPMAP_SCALE +#endif + +#ifndef SK_SUPPORT_LEGACY_REFENCODEDDATA_NOCTX +#define SK_SUPPORT_LEGACY_REFENCODEDDATA_NOCTX +#endif + +#ifndef SK_IGNORE_ETC1_SUPPORT +#define SK_IGNORE_ETC1_SUPPORT +#endif + +#ifndef SK_IGNORE_GPU_DITHER +#define SK_IGNORE_GPU_DITHER +#endif + +#ifndef SK_SUPPORT_LEGACY_EVAL_CUBIC +#define SK_SUPPORT_LEGACY_EVAL_CUBIC +#endif + +///////////////////////// Imported from BUILD.gn and skia_common.gypi + +/* In some places Skia can use static initializers for global initialization, + * or fall back to lazy runtime initialization. Chrome always wants the latter. + */ +#define SK_ALLOW_STATIC_GLOBAL_INITIALIZERS 0 + +/* This flag forces Skia not to use typographic metrics with GDI. + */ +#define SK_GDI_ALWAYS_USE_TEXTMETRICS_FOR_FONT_METRICS + +#define SK_IGNORE_BLURRED_RRECT_OPT +#define SK_USE_DISCARDABLE_SCALEDIMAGECACHE +#define SK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT + +#define SK_ATTR_DEPRECATED SK_NOTHING_ARG1 +#define SK_ENABLE_INST_COUNT 0 +#define GR_GL_CUSTOM_SETUP_HEADER "GrGLConfig_chrome.h" + +// Blink layout tests are baselined to Clang optimizing through the UB in +// SkDivBits. +#define SK_SUPPORT_LEGACY_DIVBITS_UB + +// mtklein's fiddling with Src / SrcOver. Will rebaseline these only once when +// done. +#define SK_SUPPORT_LEGACY_X86_BLITS + +#define SK_DISABLE_TILE_IMAGE_FILTER_OPTIMIZATION + +// ===== End Chrome-specific definitions ===== + +#endif // SKIA_CONFIG_SKUSERCONFIG_H_ |