skia2/include/core
Mike Klein 5625412f02 unify program() and uniforms()
It's clearer and more efficient to emit uniforms
as we use them.  The pattern to look for is something like

    skvm::I32 val = p->uniform32(uniforms, buf->bytes());
    buf->push_back(fVal);

where fVal holds the actual uniform value, and val is its program
counterpart.

Switching to SkTDArray lets us use friendlier methods like bytes() and
append(N) in the effect code.

It's a lot easier to follow this way once you get used to it and much
less error-prone.  No need to split the can-we-do-it logic up from the
uniform emission, and so no chance to write logic twice that
acccidentally disagrees.

Effects now always emit uniforms when you call program(), which means we
occasionally do that twice, once when building the Key to look up cached
programs, and once again when building the program if the cache misses.
That's not that big of a deal... it reuses the same memory exactly, and
I've added some notes around the code and assertions that everything
matches up exactly.  It only happens on cache miss, so it's dwarfed by
the cost of building and JITing the program anwyay.

Change-Id: I55a9252b11b2c0cd5f7ab8ace6df5fef29342c10
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/252837
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Mike Reed <reed@google.com>
2019-11-05 18:41:30 +00:00
..
SkAnnotation.h rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
SkBBHFactory.h simplify rtree loops in Skia too 2019-05-15 15:42:10 +00:00
SkBitmap.h Docs: Add links to header files. 2019-10-18 19:24:13 +00:00
SkBlendMode.h Make SkBlendMode_AsCoeff() public 2019-11-04 20:41:56 +00:00
SkBlurTypes.h rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
SkCanvas.h Revert "Track device coordinate space as matrix" 2019-10-22 18:09:36 +00:00
SkCanvasVirtualEnforcer.h Revert "Fix flutter roll" 2019-08-28 19:50:56 +00:00
SkClipOp.h rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
SkColor.h Docs: Add links to header files. 2019-10-18 19:24:13 +00:00
SkColorFilter.h unify program() and uniforms() 2019-11-05 18:41:30 +00:00
SkColorPriv.h cut SK_SAMPLES_FOR_X, simplify SK_?32_SHIFT 2019-04-24 20:58:58 +00:00
SkColorSpace.h Reland "Fully embrace skcms types in SkColorSpace API" 2019-11-05 18:36:26 +00:00
SkContourMeasure.h More classes no longer inherit from SkNoncopyable 2019-06-10 18:15:18 +00:00
SkCoverageMode.h rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
SkCubicMap.h [skottie] De-dupe sequential cubic mappers 2019-07-17 17:14:46 +00:00
SkData.h rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
SkDataTable.h rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
SkDeferredDisplayListRecorder.h rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
SkDeque.h More classes no longer inherit from SkNoncopyable 2019-06-10 18:15:18 +00:00
SkDocument.h rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
SkDrawable.h rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
SkDrawLooper.h remove unused sk_sp comparison operators 2019-08-27 14:52:01 +00:00
SkEncodedImageFormat.h GOOGLE3 -> SK_BUILD_FOR_GOOGLE3 2017-12-19 14:42:16 +00:00
SkExecutor.h rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
SkFilterQuality.h rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
SkFlattenable.h rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
SkFont.h Add a way to disable baseline snapping. 2019-08-27 19:54:29 +00:00
SkFontArguments.h rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
SkFontLCDConfig.h rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
SkFontMetrics.h Restore SkFontMetrics documentation. 2019-08-15 18:11:39 +00:00
SkFontMgr.h rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
SkFontParameters.h rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
SkFontStyle.h rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
SkFontTypes.h Remove SkTextEncoding and SkFontHinting macros. 2019-05-22 20:44:28 +00:00
SkGraphics.h rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
SkICC.h rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
SkImage.h YUV Cleanup: Trim comments, derive Cr/Cb from Kr/Kb 2019-10-30 17:19:16 +00:00
SkImageEncoder.h Revert "add runtime registration for encoders" 2019-05-15 22:02:39 +00:00
SkImageFilter.h Move SkImageFilter functionality into private SkImageFilter_Base 2019-08-02 18:56:39 +00:00
SkImageGenerator.h rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
SkImageInfo.h Add BT2020 (non-constant-luminance) YUV color space 2019-11-01 14:34:13 +00:00
SkMallocPixelRef.h SkMallocPixelRef: remove MakeDirect and MakeWithProc from API. 2019-08-15 19:01:13 +00:00
SkMaskFilter.h rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
SkMath.h rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
SkMatrix44.h SkVector4 as ctype for half4 2019-06-02 18:32:45 +00:00
SkMatrix.h Docs: Add links to header files. 2019-10-18 19:24:13 +00:00
SkMilestone.h Update Skia milestone to 80 2019-10-17 14:51:14 +00:00
SkMultiPictureDraw.h rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
SkOverdrawCanvas.h Add Color4f variant for DrawEdgeAAQuad 2019-08-27 23:22:32 +00:00
SkPaint.h Docs: Add links to header files. 2019-10-18 19:24:13 +00:00
SkPath.h Docs: Add links to header files. 2019-10-18 19:24:13 +00:00
SkPathEffect.h rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
SkPathMeasure.h More classes no longer inherit from SkNoncopyable 2019-06-10 18:15:18 +00:00
SkPathTypes.h Pull path nested types out to root level 2019-09-13 12:54:09 +00:00
SkPicture.h Docs: Add links to header files. 2019-10-18 19:24:13 +00:00
SkPictureRecorder.h More classes no longer inherit from SkNoncopyable 2019-06-10 18:15:18 +00:00
SkPixelRef.h rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
SkPixmap.h Docs: Add links to header files. 2019-10-18 19:24:13 +00:00
SkPngChunkReader.h rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
SkPoint3.h rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
SkPoint.h Docs: Add links to header files. 2019-10-18 19:24:13 +00:00
SkPostConfig.h Add SkUNREACHABLE to definition of SK_ABORT. 2019-08-09 20:43:39 +00:00
SkPreConfig.h Revert "simplify and centralize SK_API" 2019-04-22 18:09:45 +00:00
SkPromiseImageTexture.h rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
SkRasterHandleAllocator.h rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
SkRect.h Docs: Add links to header files. 2019-10-18 19:24:13 +00:00
SkRefCnt.h Make GrSurfaceProxy ref counts thread safe. 2019-10-24 19:55:23 +00:00
SkRegion.h Docs: Add links to header files. 2019-10-18 19:24:13 +00:00
SkRRect.h Docs: Add links to header files. 2019-10-18 19:24:13 +00:00
SkRSXform.h rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
SkRWBuffer.h rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
SkScalar.h rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
SkSerialProcs.h rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
SkShader.h Optional local matrix for SkShaders factories 2019-07-09 18:09:14 +00:00
SkSize.h Some improvements to backend texture creation. 2019-11-04 20:37:41 +00:00
SkStream.h rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
SkString.h Don't mark inline functions in SkString.h as static. 2019-06-04 11:40:02 +00:00
SkStrokeRec.h rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
SkSurface.h Remove legacy async read pixels APIs. 2019-10-28 17:28:53 +00:00
SkSurfaceCharacterization.h Add SkSurfaceCharacterization::createColorSpace 2019-10-03 17:06:13 +00:00
SkSurfaceProps.h Add SkSurfaceProp::operator!=. 2019-08-30 15:27:33 +00:00
SkSwizzle.h rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
SkTextBlob.h Docs: Add links to header files. 2019-10-18 19:24:13 +00:00
SkTileMode.h rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
SkTime.h rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
SkTraceMemoryDump.h rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
SkTypeface.h add copytable method to typefaces 2019-07-24 19:20:46 +00:00
SkTypes.h remove default looper flag, rely on clients to opt-in 2019-07-23 14:20:09 +00:00
SkUnPreMultiply.h rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
SkVertices.h rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
SkYUVAIndex.h Move SkColorChannel into SkColor 2019-07-26 15:50:12 +00:00
SkYUVASizeInfo.h Use safe computation for adding up YUVASizeInfo total bytes 2019-09-23 20:55:28 +00:00