skia2/include/core
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
..
Sk64.h Revert r10705 (ARM Skia NEON patches - 04 - Clean SkFixed / SkLONGLONG) due to 1000+ linux_layout failures (http://build.chromium.org/p/tryserver.chromium/builders/linux_layout_rel/builds/18997/steps/webkit_tests/logs/stdio) 2013-08-15 13:43:23 +00:00
SkAdvancedTypefaceMetrics.h Replace SkTScopedPtr with SkAutoTDelete in Skia. 2013-08-29 22:14:04 +00:00
SkAlpha.h Revert "Revert "change SkColorTable to be immutable"" 2013-10-10 14:44:56 +00:00
SkAnnotation.h All SkAnnotations are no-draw. Propose we fold that through. 2013-10-29 20:44:39 +00:00
SkBitmap.h Revert "Revert "add SK_ATTR_DEPRECATED -- will need to disable for chrome, since it triggers a warning"" 2013-10-31 17:28:30 +00:00
SkBitmapDevice.h Revert "Revert "add SK_ATTR_DEPRECATED -- will need to disable for chrome, since it triggers a warning"" 2013-10-31 17:28:30 +00:00
SkBlitRow.h remove dst/rendertarget support for kARGB_4444_Config 2013-06-21 18:30:53 +00:00
SkBounder.h Sanitizing source files in Skia_Periodic_House_Keeping 2013-01-26 07:06:02 +00:00
SkCanvas.h Revert "Revert "add SK_ATTR_DEPRECATED -- will need to disable for chrome, since it triggers a warning"" 2013-10-31 17:28:30 +00:00
SkChecksum.h Add SkChecksum::Murmur3. 2013-07-23 20:25:34 +00:00
SkChunkAlloc.h combine glyph and image bulk alloc, and adjust initial alloc size, to reduce total waste from 50% to 30% 2013-06-19 19:25:36 +00:00
SkClipStack.h Avoid re-rendering stencil clip for every draw with reducable clip stack 2013-11-01 15:24:20 +00:00
SkColor.h SkAlpha constant defs 2013-07-19 17:43:27 +00:00
SkColorFilter.h Initial error handling code 2013-10-23 17:06:21 +00:00
SkColorPriv.h ARM Skia NEON patches - 01 - Simple fixes 2013-07-15 13:10:31 +00:00
SkColorShader.h Added print out of SkShader information to debugger 2013-01-15 20:17:47 +00:00
SkColorTable.h Remove SkColorTable from SkFlattenable hierarchy. 2013-10-15 20:36:16 +00:00
SkComposeShader.h Added print out of SkShader information to debugger 2013-01-15 20:17:47 +00:00
SkData.h SK_ONCE for SkData and SkPathRef 2013-10-23 14:44:08 +00:00
SkDataTable.h Remove SkDataTable from SkFlattenable hierarchy. 2013-10-15 20:39:57 +00:00
SkDeque.h This CL addresses "SkCanvas::save flags are not respected by GPU backend" (https://code.google.com/p/skia/issues/detail?id=1503). 2013-08-16 00:53:34 +00:00
SkDevice.h Revert "Revert "add SK_ATTR_DEPRECATED -- will need to disable for chrome, since it triggers a warning"" 2013-10-31 17:28:30 +00:00
SkDeviceProperties.h Mask orientation and layout correctly. 2013-05-06 22:23:08 +00:00
SkDither.h Result of running tools/sanitize_source_files.py (which was added in https://codereview.appspot.com/6465078/) 2012-08-23 18:09:54 +00:00
SkDocument.h Add DPI stettings to SkDocument::CreatePDF(). Tests will be added in a future cl, once DPI will be used in SkPDFDevice 2013-10-21 17:14:37 +00:00
SkDraw.h Add SkPDFDeviceFlatenner which extends SkPDFDevice to add support to flatten the path and the text when we have perspective. 2013-10-14 13:42:12 +00:00
SkDrawFilter.h Add GPU support for roundrects 2013-04-25 15:27:00 +00:00
SkDrawLooper.h Initial error handling code 2013-10-23 17:06:21 +00:00
SkEmptyShader.h Added print out of SkShader information to debugger 2013-01-15 20:17:47 +00:00
SkEndian.h SkBitmapHasher: use 64-bit-truncated MD5 instead of 64-bit CityHash 2013-05-03 17:35:39 +00:00
SkError.h Sanitizing source files in Housekeeper-Nightly 2013-09-05 07:01:19 +00:00
SkFixed.h Revert r10705 (ARM Skia NEON patches - 04 - Clean SkFixed / SkLONGLONG) due to 1000+ linux_layout failures (http://build.chromium.org/p/tryserver.chromium/builders/linux_layout_rel/builds/18997/steps/webkit_tests/logs/stdio) 2013-08-15 13:43:23 +00:00
SkFlate.h Result of running tools/sanitize_source_files.py (which was added in https://codereview.appspot.com/6465078/) 2012-08-23 18:09:54 +00:00
SkFlattenable.h Initial error handling code 2013-10-23 17:06:21 +00:00
SkFlattenableBuffers.h Adding size parameter to read array functions 2013-10-31 18:37:50 +00:00
SkFlattenableSerialization.h Enabling validation code in serialization and adding serialization to fuzzer 2013-10-28 15:52:02 +00:00
SkFloatBits.h Sanitizing source files in Skia_Periodic_House_Keeping 2013-01-26 07:06:02 +00:00
SkFloatingPoint.h path ops -- use standard max, min, double-is-nan 2013-04-23 11:56:44 +00:00
SkFontHost.h Revert "Revert "Revert "try enabling FONTHOST_USES_FONTMGR and see what breaks""" 2013-07-31 19:36:07 +00:00
SkFontLCDConfig.h Sanitizing source files in Skia_Periodic_House_Keeping 2013-03-13 07:01:04 +00:00
SkGeometry.h Add implicit hairline conic rendering to GPU 2013-07-12 20:15:34 +00:00
SkGraphics.h Sanitizing source files in Housekeeper-Nightly 2013-09-27 07:01:29 +00:00
SkImage.h move SkImage::ColorType into SkColorType 2013-11-01 13:46:54 +00:00
SkImageDecoder.h move SkImage::ColorType into SkColorType 2013-11-01 13:46:54 +00:00
SkImageEncoder.h Rewrite SkTRegistry to take any trivially-copyable type. 2013-09-04 17:20:18 +00:00
SkImageFilter.h Initial error handling code 2013-10-23 17:06:21 +00:00
SkImageFilterUtils.h Added ctm matrix to GPU path 2013-08-05 16:53:50 +00:00
SkInstCnt.h Removed unused parameters 2013-03-11 18:50:03 +00:00
SkLineClipper.h Sanitizing source files in Skia_Periodic_House_Keeping 2013-01-26 07:06:02 +00:00
SkMallocPixelRef.h Result of running tools/sanitize_source_files.py (which was added in https://codereview.appspot.com/6465078/) 2012-08-23 18:09:54 +00:00
SkMask.h Sanitizing source files in Housekeeper-Nightly 2013-05-03 07:01:00 +00:00
SkMaskFilter.h Initial error handling code 2013-10-23 17:06:21 +00:00
SkMath.h Add SkDivMod with a special case for ARM. 2013-09-26 19:22:54 +00:00
SkMatrix.h Add homogeneous point mapping to Matrix 2013-08-15 21:12:11 +00:00
SkMetaData.h Sanitizing source files in Skia_Periodic_House_Keeping 2013-01-26 07:06:02 +00:00
SkOSFile.h Fix bug in setting directories for tests. 2013-06-06 14:59:56 +00:00
SkPackBits.h Automatic update of all copyright notices to reflect new license terms. 2011-07-28 14:26:00 +00:00
SkPaint.h Revert "Revert "add SK_ATTR_DEPRECATED -- will need to disable for chrome, since it triggers a warning"" 2013-10-31 17:28:30 +00:00
SkPaintOptionsAndroid.h We don't flatten or unflatten SkPaintOptionsAndroid. Reproduce and fix. 2013-09-26 15:16:12 +00:00
SkPath.h Revert "Revert "add SK_ATTR_DEPRECATED -- will need to disable for chrome, since it triggers a warning"" 2013-10-31 17:28:30 +00:00
SkPathEffect.h Initial error handling code 2013-10-23 17:06:21 +00:00
SkPathMeasure.h add SK_API 2013-05-08 13:25:02 +00:00
SkPathRef.h Use SkPathRef gen id for SkPath::getGenerationID 2013-10-30 18:57:55 +00:00
SkPicture.h Expose SkPicture::willPlayBackBitmaps() 2013-10-24 11:12:47 +00:00
SkPixelRef.h We want to give SkPixelRef a way to signal over to GrResourceCache that it's become pointless to keep around textures based on that SkPixelRef when its pixels change, so that it can be a good citizen and free those textures. 2013-10-24 17:44:27 +00:00
SkPoint.h Revert "Revert "add SK_ATTR_DEPRECATED -- will need to disable for chrome, since it triggers a warning"" 2013-10-31 17:28:30 +00:00
SkPostConfig.h Disabling SK_ATTR_DEPRECATED the hard way 2013-10-31 22:42:33 +00:00
SkPreConfig.h Revert "Revert "add SK_ATTR_DEPRECATED -- will need to disable for chrome, since it triggers a warning"" 2013-10-31 17:28:30 +00:00
SkRasterizer.h Initial error handling code 2013-10-23 17:06:21 +00:00
SkReader32.h revert 6766, thereby re-landing 6762-6763 now that the bots are ready 2012-12-12 20:48:18 +00:00
SkRect.h Revert "Revert "add SK_ATTR_DEPRECATED -- will need to disable for chrome, since it triggers a warning"" 2013-10-31 17:28:30 +00:00
SkRefCnt.h Allow users to build on top of, instead of beneath, SkRefCnt. 2013-10-25 18:40:24 +00:00
SkRegion.h Add getRectCount to SkRegtion 2013-07-17 21:39:28 +00:00
SkRRect.h remove contains(x,y) for rects and rrects ... not well defined, and unused 2013-10-30 17:39:43 +00:00
SkScalar.h remove outdated debugging code now that we no longer support fixed point 2013-05-23 16:41:42 +00:00
SkScalarCompare.h Sanitizing source files in Skia_Periodic_House_Keeping 2013-01-26 07:06:02 +00:00
SkShader.h Initial error handling code 2013-10-23 17:06:21 +00:00
SkSize.h must always include another skia header (unless you're SkTypes.h). In this case, 2012-11-26 20:18:00 +00:00
SkStream.h Clean up SkTypes.h. 2013-10-11 18:50:45 +00:00
SkString.h fix https://code.google.com/p/skia/issues/detail?id=1356 2013-06-19 18:52:42 +00:00
SkStringUtils.h Sanitizing source files in Skia_Periodic_House_Keeping 2013-01-29 07:05:52 +00:00
SkStrokeRec.h Make GrContext cache the gpu paths 2013-11-01 15:23:44 +00:00
SkSurface.h move SkImage::ColorType into SkColorType 2013-11-01 13:46:54 +00:00
SkTArray.h Repurpose GrGLCoordTransform as GrGLProgramEffects 2013-10-03 15:17:58 +00:00
SkTDArray.h Third wave of Win64 warning cleanup 2013-10-16 17:48:11 +00:00
SkTDict.h Make SkTDArray accessors const-friendly. 2013-02-28 19:03:13 +00:00
SkTDStack.h Sanitizing source files in Skia_Periodic_House_Keeping 2013-01-26 07:06:02 +00:00
SkTemplates.h Revert r1784: SK_API on a non-concrete template is strange. 2013-10-30 22:22:05 +00:00
SkThread_platform.h explicitly initialize all entries in array of SkBaseMatrix, since we can't say 2013-04-12 15:34:53 +00:00
SkThread.h Result of running tools/sanitize_source_files.py (which was added in https://codereview.appspot.com/6465078/) 2012-08-23 18:09:54 +00:00
SkTileGridPicture.h Sanitizing source files in Skia_Periodic_House_Keeping 2013-03-01 12:12:55 +00:00
SkTime.h Sanitizing source files in Skia_Periodic_House_Keeping 2013-01-26 07:06:02 +00:00
SkTInternalLList.h Fix compiler error in SkTInternalList.h 2012-12-03 23:34:32 +00:00
SkTLazy.h Sanitizing source files in Skia_Periodic_House_Keeping 2013-04-02 07:01:34 +00:00
SkTrace.h Sanitizing source files in Skia_Periodic_House_Keeping 2013-01-26 07:06:02 +00:00
SkTRegistry.h Rewrite SkTRegistry to take any trivially-copyable type. 2013-09-04 17:20:18 +00:00
SkTSearch.h One SkTSearch to rule them all. Allow key to be of different type than the array. 2013-05-17 19:05:03 +00:00
SkTypeface.h prototype for kerning api 2013-10-30 15:07:03 +00:00
SkTypes.h Clean up SkTypes.h. 2013-10-11 18:50:45 +00:00
SkUnitMapper.h Initial error handling code 2013-10-23 17:06:21 +00:00
SkUnPreMultiply.h Result of running tools/sanitize_source_files.py (which was added in https://codereview.appspot.com/6465078/) 2012-08-23 18:09:54 +00:00
SkUtils.h Fix a few clang errors while trying to build tools target. 2013-03-26 21:48:58 +00:00
SkWeakRefCnt.h Make it explicit that some validate methods are debug only 2013-10-02 16:42:21 +00:00
SkWriter32.h Revert "Revert "add SK_ATTR_DEPRECATED -- will need to disable for chrome, since it triggers a warning"" 2013-10-31 17:28:30 +00:00
SkXfermode.h Revert "Revert "add SK_ATTR_DEPRECATED -- will need to disable for chrome, since it triggers a warning"" 2013-10-31 17:28:30 +00:00