Go to file
commit-bot@chromium.org a5572e5bb2 Add a class to allocate small objects w/o extra calls to new.
Add SkSmallAllocator, a template for allocating small (as defined by the
instantiation) objects without extra calls to new. Add a helper macro to
make using it simple.

Remove SkTemplatesPriv.h, whose behavior is replaced by SkSmallAllocator.
The old SK_PLACEMENT_NEW had the following drawbacks:
- Easily confused with SkNEW_PLACEMENT.
- Requires passing around lots of void*s along with the storageSize.
- Requires using a separate class for deleting it.
- We had multiple ways Auto objects for deleting in different places.
- It always did a straight heap allocation on Windows, meaning Windows
  did not get any advantages from the confusing code.
The new SkSmallAllocator simplifies things:
- It is clear about what it does.
- It takes care of the deletion in one place that is automatically
  handled.

Further, the new class can be used to create more than one object. This
is in preparation for BUG=skia:1976, for which we would like to create
a new object without extra heap allocations. The plan is to create both
the blitter and the new object on the stack using the SkSmallAllocator.

Add a new test for SkSmallAllocator.

SkShader.h:
Move the private version of CreateBitmapShader to SkBitmapProcShader
(which already has the implementation) and remove the friend class
(which was only used to call this private function). This allows
SkSmallAllocator to reside in the private src/ directory.

SkBitmapProcShader:
Move CreateBitmapShader and the macro for the storage size here. With
the macro in a (private) header, the (private) headers with function
declarations (which now depend on the storage size used) can see the
macro.
Use SkSmallAllocator in CreateBitmapShader.
Change the macro to kBlitterStorageByteCount, since SkSmallAllocator
takes a byte count as its template parameter.

SkBlitter:
Use the SkSmallAllocator.
Remove Sk3DShader::fKillProc and SkAutoCallProc. Both of their
behaviors have been moved into SkSmallAllocator (SkAutoCallProc was
unnecessary anyway, because the only time we ever used it we also
called detach(), so its auto behavior never happened).
Create the Sk3DShader on the stack, if there's room.
Remove the helper version of Choose, which was unused.

SmallAllocatorTest:
Test for the new class.

The rest:
Use SkSmallAllocator.

BUG=skia:1976
R=reed@google.com, mtklein@google.com

Author: scroggo@google.com

Review URL: https://codereview.chromium.org/179343005

git-svn-id: http://skia.googlecode.com/svn/trunk@13696 2bbb7eff-a529-9590-31e7-b0007b416f81
2014-03-07 03:24:41 +00:00
animations first cut at a checkbox 2009-10-21 19:41:10 +00:00
bench Adding this call simulates seeing a *different* bitmap every time we scale, which changes the code path (places much heavier load on constructing a new filter). This better emulates the kind of environment most embedders see us in, where they try to cache a scaled bitmap rather than frequently rescaling it. 2014-03-06 17:16:37 +00:00
debugger Generating the 1M skps frequently yields truncated skps. This tool is intended to help automate weeding these out. 2014-03-03 19:18:39 +00:00
dm DM: read image files without an extra copy 2014-03-05 15:37:11 +00:00
docs Add a sample doc in markdown format. 2014-01-24 19:25:39 +00:00
expectations Mark mixed_xfermodes_gpu on Win7 perspective bot as ignore-failure 2014-03-06 20:34:02 +00:00
experimental Factor out a BaseContext from JsContext. 2014-03-04 20:44:32 +00:00
forth Sanitizing source files in Skia_Periodic_House_Keeping 2013-01-26 07:06:02 +00:00
gm rebaseline_server: add "show thumbnails" option, and skip display of nonexistent images 2014-03-05 19:46:17 +00:00
gyp Add a class to allocate small objects w/o extra calls to new. 2014-03-07 03:24:41 +00:00
include Add a class to allocate small objects w/o extra calls to new. 2014-03-07 03:24:41 +00:00
platform_tools Make arm64 test script more efficient with old versions of gsutil. 2014-03-06 17:47:49 +00:00
resources Add a simple test ttc for FontHost test. 2014-01-10 20:56:21 +00:00
samplecode DM: also run benches once. 2014-02-26 23:01:57 +00:00
src Add a class to allocate small objects w/o extra calls to new. 2014-03-07 03:24:41 +00:00
tests Add a class to allocate small objects w/o extra calls to new. 2014-03-07 03:24:41 +00:00
third_party Roll fontconfig to 2.11.0 and reenable poppler on mac 2014-01-15 17:24:22 +00:00
tools This CL is motivated by the desire to make the skpinfo tool work a bit better. The main concern is that the assumptions made w.r.t. written bytes may not be valid for all SkWStream sub-classes. 2014-03-05 18:25:20 +00:00
trybots_to_run/chrome Deleting the hardcoded list of compile bots in trybots_to_run. 2013-04-09 11:59:42 +00:00
.gitignore Ignore out even if it's a symlink. 2014-01-15 16:55:04 +00:00
AUTHORS Adding code to calculate Underline Thickness from Font Metrics, this will be useful when Skia is used with Blink/Chrome. Blink changes are uploaded with code change in patch https://codereview.chromium.org/147703002/ 2014-03-01 20:12:26 +00:00
codereview.settings Add BUG_PREFIX to codereview.settings 2014-01-14 21:19:21 +00:00
CONTRIBUTING Add CONTRIBUTING file 2014-01-13 15:06:26 +00:00
CQ_COMMITTERS Adding list of Skia's CQ committers 2014-02-13 21:02:38 +00:00
DEPS Build Skia for a bare-bones embedded Linux system. 2014-02-24 20:22:34 +00:00
Doxyfile Pointing to http://skia-autogen.googlecode.com/svn/docs/html/index.html in Doxyfile 2012-07-03 11:35:07 +00:00
gyp_skia Fix ninja build on Android 2013-10-01 15:31:54 +00:00
gyp_skia.py Roll gyp deps from 1765 to 1796. 2013-11-21 18:11:14 +00:00
LICENSE Manually update copyright notices in files that defied the automated process 2011-07-28 14:24:55 +00:00
make.bat Make make.bat and gyp_skia work with VS 2012. 2013-05-07 19:31:20 +00:00
make.py Use SKIA_OUT variable in make.py 2013-07-23 15:45:50 +00:00
Makefile pathops work in progress 2013-11-01 17:36:03 +00:00
Makefile.old Replace GR_*_BUILD by their SK_BUILD_FOR_* equivalents. 2013-09-25 20:57:51 +00:00
OWNERS add root files from chrome 2013-08-13 19:11:15 +00:00
PRESUBMIT.py Check if the issue owner is in the AUTHORS file in PRESUBMIT.py 2014-02-03 14:18:32 +00:00
README whitespace commit to trigger buildbot 2011-07-15 14:11:58 +00:00
README.chromium add root files from chrome 2013-08-13 19:11:15 +00:00
skia.gyp Remove the comments settings for vim tab width and expansion variables. 2013-12-02 22:23:03 +00:00
whitespace.txt Yet another whitespace change to see if the bots are fixed 2014-03-06 23:38:52 +00:00

Skia is a complete 2D graphic library for drawing Text, Geometries, and Images.

See full details, and build instructions, at http://code.google.com/p/skia/wiki/DocRoot