skia2/include/core
senorblanco 84cd621670 Implement caching of filled paths in the tessellated path renderer.
Paths are cached as tessellated triangle meshes in vertex buffers on the GPU. Stroked paths are not (yet) cached.

Paths containing no curved segments (linear paths) are reused at all scales. Paths containing curved segments are reused within a scale tolerance threshold.

In order to invalidate the cache when an SkPath is changed or deleted,
this required implementing genID change notification in SkPath. This is
modelled almost exactly on SkPixelRef::GenIDChangeListener.
However, It does not currently implement the check for unique genIDs,
so notifiers will fire when the first instance of an SkPathRef
using a given genID is destroyed.

Another caveat is that you cannot successfully add a change notifier
to an empty path, since it uses the "canonical" empty path which is
never modified or destroyed. For this reason, we prevent adding
listeners to it.

BUG=skia:4121,skia:4122, 497403
DOCS_PREVIEW= https://skia.org/?cl=1114353004

Committed: https://skia.googlesource.com/skia/+/468dfa72eb6694145487be17876804dfca3b7adb

Review URL: https://codereview.chromium.org/1114353004
2015-08-04 10:01:58 -07:00
..
SkAnnotation.h Factory methods for heap-allocated SkAnnotation objects. 2014-02-27 11:47:36 +00:00
SkAtomics.h Clean up a few includes, introduce iwyu. 2015-07-29 11:49:40 -07:00
SkBBHFactory.h C++11 override should now be supported by all of {bots,Chrome,Android,Mozilla} 2015-03-25 18:17:32 -07:00
SkBitmap.h remove SkInstCnt 2015-06-26 11:45:03 -07:00
SkBitmapDevice.h remove all guards for changes to drawBitmapRect / drawImageRect 2015-07-28 07:35:14 -07:00
SkBlitRow.h Re-proc SkBlitRow::Color32 for ARM. 2015-05-22 06:08:29 -07:00
SkBlurTypes.h move common blur types into central header 2014-04-28 16:25:35 +00:00
SkCanvas.h remove all guards for changes to drawBitmapRect / drawImageRect 2015-07-28 07:35:14 -07:00
SkChunkAlloc.h Add rewind capability to SkChunkAlloc 2015-02-27 08:31:57 -08:00
SkClipStack.h Clean up clipping code a bit 2015-02-10 08:16:55 -08:00
SkColor.h No one calls SkXfermode::GetProc16 2015-07-27 12:07:29 -07:00
SkColorFilter.h rename GrShaderDataManager -> GrProcessorDataManager 2015-07-09 06:28:14 -07:00
SkColorPriv.h Replace buggy_blend_modes GM with an exhaustive test. 2015-07-16 07:01:40 -07:00
SkColorTable.h remove SkInstCnt 2015-06-26 11:45:03 -07:00
SkComposeShader.h C++11 override should now be supported by all of {bots,Chrome,Android,Mozilla} 2015-03-25 18:17:32 -07:00
SkData.h remove SkInstCnt 2015-06-26 11:45:03 -07:00
SkDataTable.h remove SkInstCnt 2015-06-26 11:45:03 -07: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 remove all guards for changes to drawBitmapRect / drawImageRect 2015-07-28 07:35:14 -07: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 remove SkInstCnt 2015-06-26 11:45:03 -07:00
SkDraw.h Revert[2] SkDraw and all Blitters to use pixmap instead of bitmapi 2015-06-09 12:16:53 -07:00
SkDrawable.h add matrix options to drawDrawable 2015-07-07 10:22:31 -07:00
SkDrawFilter.h remove SkInstCnt 2015-06-26 11:45:03 -07:00
SkDrawLooper.h remove SkInstCnt 2015-06-26 11:45:03 -07:00
SkEndian.h fix size_t/int warnings 2014-04-23 19:19:44 +00:00
SkError.h Sanitizing source files in Housekeeper-Nightly 2013-09-05 07:01:19 +00:00
SkFilterQuality.h add newImage API 2015-01-23 05:58:07 -08:00
SkFixed.h Correct SkFixedToDouble. 2015-04-17 10:05:43 -07:00
SkFlattenable.h remove SkInstCnt 2015-06-26 11:45:03 -07:00
SkFlattenableSerialization.h Removed unnecessary define 2013-11-08 15:24:12 +00:00
SkFloatBits.h remove unused SkIntToFloatCast_NoOverflowCheck 2014-08-19 07:39:41 -07:00
SkFloatingPoint.h Break LCD and Bitmap text dependency on hardcoded atlas values 2015-08-04 09:40:03 -07:00
SkFont.h Treat embedded bitmaps as a hinting method. 2014-08-19 13:18:58 -07:00
SkFontHost.h Remove a layer of indirection and code from SkFontHost. 2014-09-10 15:49:48 -07:00
SkFontLCDConfig.h Sanitizing source files in Skia_Periodic_House_Keeping 2013-03-13 07:01:04 +00:00
SkFontStyle.h Replace SkTypeface::Style with SkFontStyle. 2014-10-20 13:33:19 -07:00
SkGraphics.h Lay groundwork for SkOpts. 2015-07-30 07:30:16 -07:00
SkImage.h unify pixelref and image ID space, so we can share IDs when we share pixels 2015-07-30 18:58:23 -07:00
SkImageDecoder.h remove SkInstCnt 2015-06-26 11:45:03 -07:00
SkImageEncoder.h Add SkEncodedFormat, used by SkCodec. 2015-03-20 11:55:55 -07:00
SkImageFilter.h Remove SK_LEGACY_IMAGE_FILTER_CROP_RECT_EDGES code. 2015-07-21 11:11:17 -07:00
SkImageGenerator.h Remove SK_LEGACY_IMAGE_GENERATOR_ENUMS_AND_OPTIONS 2015-07-30 07:47:45 -07:00
SkImageInfo.h remove now-dead flags 2015-08-01 07:03:20 -07:00
SkLazyPtr.h Clean up SkDynamicAnnotations. 2015-03-12 05:27:46 -07:00
SkMallocPixelRef.h remove SkInstCnt 2015-06-26 11:45:03 -07:00
SkMask.h remove unused kLCD_MaskFormat 2014-11-13 14:39:58 -08:00
SkMaskFilter.h Misc cleanup 2015-07-22 11:54:44 -07:00
SkMath.h Make SkIsPow2 templated 2015-07-31 08:22:17 -07:00
SkMatrix.h Fix up SkMatrix::isFinite call 2015-07-06 12:15:34 -07:00
SkMetaData.h "NULL !=" = NULL 2014-09-05 13:34:00 -07:00
SkMultiPictureDraw.h Add sk_parallel_for() 2015-06-17 15:26:15 -07:00
SkMutex.h Clean up a few includes, introduce iwyu. 2015-07-29 11:49:40 -07:00
SkOnce.h Move instanced index buffer creation to flush time 2015-05-04 10:36:43 -07:00
SkOSFile.h Move SkOSFile::Iter impls into ports. 2015-02-12 07:18:27 -08:00
SkPackBits.h Remove unused PackBits methods and fix length checks 2015-06-04 15:10:37 -07:00
SkPaint.h Make SkPaint::glyphsToUnichars use explicit SkSurfaceProps 2015-06-26 12:17:59 -07:00
SkPath.h change getBounds to return 0000 iff there are zero points 2015-07-28 06:00:50 -07:00
SkPathEffect.h remove SkInstCnt 2015-06-26 11:45:03 -07:00
SkPathMeasure.h use conics 2014-12-17 08:21:05 -08:00
SkPathRef.h Implement caching of filled paths in the tessellated path renderer. 2015-08-04 10:01:58 -07:00
SkPicture.h change old picture serialization to really handle images 2015-06-22 12:48:26 -07:00
SkPictureRecorder.h Move the last headers. Cross your fingers. 2015-07-29 13:31:22 -07:00
SkPixelRef.h cache private readback for gpu-images 2015-08-04 08:10:13 -07:00
SkPixelSerializer.h add const to encodePixels pixel parameter 2014-12-19 12:26:07 -08:00
SkPixmap.h Make peekPixels() usable with raster surface snapshots 2015-07-27 10:27:29 -07:00
SkPoint.h Revert of Revert of stop calling SkScalarDiv (patchset #1 id:1 of https://codereview.chromium.org/1138263002/) 2015-05-12 10:37:34 -07:00
SkPostConfig.h Clean up a few includes, introduce iwyu. 2015-07-29 11:49:40 -07:00
SkPreConfig.h Remove WEBKIT_VERSION_MIN_REQUIRED and config.h. 2015-07-29 14:46:12 -07:00
SkRasterizer.h remove SkInstCnt 2015-06-26 11:45:03 -07:00
SkRect.h Simple CL to add a joinWithPossiblyEmptyArg to SkRect 2015-05-01 08:51:48 -07:00
SkRefCnt.h remove SkInstCnt 2015-06-26 11:45:03 -07:00
SkRegion.h Remove useless SkASSERT in SkRect.h and SkRegion.h 2015-04-28 12:47:48 -07:00
SkRRect.h Fill SkRRect::fType proactively. 2014-12-18 13:29:54 -08:00
SkRSXform.h add helper to create RSXform w/ anchorPt 2015-07-30 05:46:05 -07:00
SkScalar.h remove now-dead flags 2015-08-01 07:03:20 -07:00
SkShader.h rename GrShaderDataManager -> GrProcessorDataManager 2015-07-09 06:28:14 -07:00
SkSize.h deprecate SkScalarRound (and its ilk), use SkScalarRound[ToInt,ToScalar]. #define SK_SUPPORT_DEPRECATED_SCALARROUND for legacy clients 2013-12-17 19:22:07 +00:00
SkSpinlock.h Fix componene debug build failure in chromium 2015-07-10 08:32:23 -07:00
SkStream.h remove SkInstCnt 2015-06-26 11:45:03 -07:00
SkString.h SkString: remove fStr member 2015-04-08 13:01:22 -07:00
SkStrokeRec.h Make GrStrokeInfo inherit from SkStrokeRec 2015-05-18 22:23:54 -07:00
SkSurface.h add ability to get FBO ID to Surface 2015-07-08 12:54:04 -07:00
SkSurfaceProps.h Clean up usage of SkSurfaceProps 2015-06-22 12:06:08 -07:00
SkTArray.h Remove unnecessary virtual destructor on SkTArray 2015-07-31 11:53:11 -07:00
SkTDArray.h Fix some lingering typos 2015-04-24 11:10:51 -07:00
SkTDict.h move some headers out of public 2014-06-17 09:04:45 -07:00
SkTDStack.h Sanitizing source files in Skia_Periodic_House_Keeping 2013-01-26 07:06:02 +00:00
SkTemplates.h refactor bitmapshader to use a controller 2015-06-04 06:31:31 -07:00
SkTextBlob.h Start canonicalizing color for all A8 textblobs 2015-04-14 12:17:27 -07:00
SkTime.h SkTime: return timezone information; format in ISO-8601 2015-05-01 07:06:23 -07:00
SkTInternalLList.h "NULL !=" = NULL 2014-09-05 13:34:00 -07:00
SkTLazy.h "NULL !=" = NULL 2014-09-05 13:34:00 -07: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 Adding debug SkScalerContext which returns random mask formats 2015-07-29 10:14:58 -07:00
SkTypes.h Clean up a few includes, introduce iwyu. 2015-07-29 11:49:40 -07:00
SkUnPreMultiply.h Factor out UnPreMultiplyPreservingByteOrder 2014-01-15 22:24:58 +00:00
SkUtils.h Move SkOpts.h back to src/core. 2015-07-31 14:02:36 -07:00
SkWeakRefCnt.h Remove SkThread.h, include SkMutex.h or SkAtomics.h as appropriate. 2015-07-07 12:21:22 -07:00
SkWriteBuffer.h change old picture serialization to really handle images 2015-06-22 12:48:26 -07:00
SkWriter32.h Make SkWriter32::snapshotAsData() a dumb copy. 2015-01-29 12:03:53 -08:00
SkXfermode.h No one calls SkXfermode::GetProc16 2015-07-27 12:07:29 -07:00