369e9375a3
Adds a set of histogram macros to Skia, modeled after Chrome's UMA_HISTOGRAM_* macros. These allow logging of high frequency events, and are useful to analyze real world usage of certain features. By default, these macros are no-ops. Users can provide a custom header file which defines these macros if they wish to collect histogram data. Chrome will provide such a header. I've currently only added two macros: - SK_HISTOGRAM_BOOLEAN - logs a true/false type relationship (whether we are tiling a texture or not on each draw). - SK_HISTOGRAM_ENUMERATION - logs a set of potential values (which of a number of choices were selected for the texture upload path). We could add more unused macros at the moment, but it seems easier to add these as needed, WDYT? BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1652053004 Review URL: https://codereview.chromium.org/1652053004
158 lines
5.9 KiB
C
158 lines
5.9 KiB
C
|
|
/*
|
|
* Copyright 2006 The Android Open Source Project
|
|
*
|
|
* Use of this source code is governed by a BSD-style license that can be
|
|
* found in the LICENSE file.
|
|
*/
|
|
|
|
|
|
#ifndef SkUserConfig_DEFINED
|
|
#define SkUserConfig_DEFINED
|
|
|
|
/* 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
|
|
|
|
/* Skia has certain debug-only code that is extremely intensive even for debug
|
|
builds. This code is useful for diagnosing specific issues, but is not
|
|
generally applicable, therefore it must be explicitly enabled to avoid
|
|
the performance impact. By default these flags are undefined, but can be
|
|
enabled by uncommenting them below.
|
|
*/
|
|
//#define SK_DEBUG_GLYPH_CACHE
|
|
//#define SK_DEBUG_PATH
|
|
|
|
/* 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
|
|
|
|
/* Most compilers use the same bit endianness for bit flags in a byte as the
|
|
system byte endianness, and this is the default. If for some reason this
|
|
needs to be overridden, specify which of the mutually exclusive flags to
|
|
use. For example, some atom processors in certain configurations have big
|
|
endian byte order but little endian bit orders.
|
|
*/
|
|
//#define SK_UINT8_BITFIELD_BENDIAN
|
|
//#define SK_UINT8_BITFIELD_LENDIAN
|
|
|
|
|
|
/* 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__)
|
|
|
|
/*
|
|
* To specify a different default font cache limit, define this. If this is
|
|
* undefined, skia will use a built-in value.
|
|
*/
|
|
//#define SK_DEFAULT_FONT_CACHE_LIMIT (1024 * 1024)
|
|
|
|
/*
|
|
* To specify the default size of the image cache, undefine this and set it to
|
|
* the desired value (in bytes). SkGraphics.h as a runtime API to set this
|
|
* value as well. If this is undefined, a built-in value will be used.
|
|
*/
|
|
//#define SK_DEFAULT_IMAGE_CACHE_LIMIT (1024 * 1024)
|
|
|
|
/* 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 in PDF generation.
|
|
*/
|
|
//#define SK_SFNTLY_SUBSETTER "sfntly/subsetter/font_subsetter.h"
|
|
|
|
/* Define this to set the upper limit for text to support LCD. Values that
|
|
are very large increase the cost in the font cache and draw slower, without
|
|
improving readability. If this is undefined, Skia will use its default
|
|
value (e.g. 48)
|
|
*/
|
|
//#define SK_MAX_SIZE_FOR_LCDTEXT 48
|
|
|
|
/* 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
|
|
|
|
/* Change the ordering to work in X windows.
|
|
*/
|
|
#ifdef SK_SAMPLES_FOR_X
|
|
#define SK_R32_SHIFT 16
|
|
#define SK_G32_SHIFT 8
|
|
#define SK_B32_SHIFT 0
|
|
#define SK_A32_SHIFT 24
|
|
#endif
|
|
|
|
|
|
/* Determines whether to build code that supports the GPU backend. Some classes
|
|
that are not GPU-specific, such as SkShader subclasses, have optional code
|
|
that is used allows them to interact with the GPU backend. If you'd like to
|
|
omit this code set SK_SUPPORT_GPU to 0. This also allows you to omit the gpu
|
|
directories from your include search path when you're not building the GPU
|
|
backend. Defaults to 1 (build the GPU code).
|
|
*/
|
|
//#define SK_SUPPORT_GPU 1
|
|
|
|
|
|
/* The PDF generation code uses Path Ops to handle complex clipping paths,
|
|
* but at this time, Path Ops is not release ready yet. So, the code is
|
|
* hidden behind this #define guard. If you are feeling adventurous and
|
|
* want the latest and greatest PDF generation code, uncomment the #define.
|
|
* When Path Ops is release ready, the define guards and this user config
|
|
* define should be removed entirely.
|
|
*/
|
|
//#define SK_PDF_USE_PATHOPS_CLIPPING
|
|
|
|
/* Skia makes use of histogram logging macros to trace the frequency of
|
|
* events. By default, Skia provides no-op versions of these macros.
|
|
* Skia consumers can provide their own definitions of these macros to
|
|
* integrate with their histogram collection backend.
|
|
*/
|
|
//#define SK_HISTOGRAM_BOOLEAN(name, value)
|
|
//#define SK_HISTOGRAM_ENUMERATION(name, value, boundary_value)
|
|
|
|
#endif
|