Go to file
commit-bot@chromium.org 679eb674fc Avoid re-rendering stencil clip for every draw with reducable clip stack
Fixes the cases where clip stack reduction would cause clip to be
re-rendered to stencil for each draw call. This causes unneeded
slowdown.

Stencil cache would not be used because the clip stack generation id communicated
by the clip stack element list would be invalid. This happended due to

 a) clip stack reduction creating new elements in the element list.

 b) purging logic removing the generation id, but reduction logic
    selecting already purged element, and thus the generation id, as
    the representative state of the clip.

Cases of a) where reduction would flatten the stack to a single new
element were fixed by assigning the generation id of the top-most
element of the clip stack as the generation id of the new
element. This is not strictly minimal, but enables more caching than
using invalid id.

Cases of a) where reduction would substitute a stack element with a
new element the generation id of the substituted element is used.

The b) part was fixed by removing the purging logic. It was not
exactly correct, as the previously purged states were actually
used. The purging was not used for anything.

Changes SkClipStack API to highlight that invalid generation id is
never returned by SkClipStack. Empty stacks are wide open. Changes the
clients to reflect this.

Fixes a crash when not passing anti-alias out parameter to
GrReducedClip::ReduceClipStack. The crash is not exercised in the
current code.

R=bsalomon@google.com, robertphillips@google.com

Author: kkinnunen@nvidia.com

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

git-svn-id: http://skia.googlecode.com/svn/trunk@12084 2bbb7eff-a529-9590-31e7-b0007b416f81
2013-11-01 15:24:20 +00:00
animations first cut at a checkbox 2009-10-21 19:41:10 +00:00
bench move SkImage::ColorType into SkColorType 2013-11-01 13:46:54 +00:00
debugger move SkImage::ColorType into SkColorType 2013-11-01 13:46:54 +00:00
dm DM: add --rtree. 2013-10-30 20:45:28 +00:00
expectations Rebaseline improved N4 images 2013-11-01 15:11:18 +00:00
experimental Revert "If the path is a rect, call drawRect to raster the geometry in SkCanvas::drawPath to get better performance." 2013-10-22 16:54:15 +00:00
forth Sanitizing source files in Skia_Periodic_House_Keeping 2013-01-26 07:06:02 +00:00
gm rebaseline_server: right-align "select/clear/toggle all tests" buttons with results table 2013-11-01 14:29:03 +00:00
gyp Adding size parameter to read array functions 2013-10-31 18:37:50 +00:00
include Avoid re-rendering stencil clip for every draw with reducable clip stack 2013-11-01 15:24:20 +00:00
platform_tools move SkImage::ColorType into SkColorType 2013-11-01 13:46:54 +00:00
resources Bench baseline for mostly 0 image. 2013-09-25 21:42:12 +00:00
samplecode move SkImage::ColorType into SkColorType 2013-11-01 13:46:54 +00:00
src Avoid re-rendering stencil clip for every draw with reducable clip stack 2013-11-01 15:24:20 +00:00
tests Avoid re-rendering stencil clip for every draw with reducable clip stack 2013-11-01 15:24:20 +00:00
third_party Add libpoppler for PDF rendering, take 2 2013-08-20 18:57:01 +00:00
tools move SkImage::ColorType into SkColorType 2013-11-01 13:46:54 +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 leading slash confuses non-git tools that read .gitignore, like ag 2013-07-30 17:23:01 +00:00
codereview.settings Removing blank lines from codereview.settings. 2013-02-26 16:01:21 +00:00
DEPS Roll gyp from r1684 to r1765. 2013-10-21 18:49:43 +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
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 Update Skia Android tools. 2013-08-12 12:30:04 +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 If any change is made to the public API then make sure there is an LGTM from an owner. 2013-08-12 14:51:20 +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 gyp: generate "everything" and "most" targets instead of "all" 2012-10-25 16:32:07 +00:00
whitespace.txt Whitespace change to trigger builds after buildbot script changes 2013-10-31 13:21:32 +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