skia2/bench
Chris Dalton 0f9ebd100e Optimize GrTessellatePathOp's code to emit inner triangles
Previously we used a naive algorithm to generate "middle-out" topologies
for inner polygons, including copying all endpoints to a new array.

This CL adds a "GrMiddleOutPolygonTriangulator" class that
accomplishes the same thing in 1/5th the time using a small O(log N)
stack.

Change-Id: I3a7059e5d133a730b7084a17d8fbaaa3aaa81336
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/285531
Commit-Queue: Chris Dalton <csmartdalton@google.com>
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
2020-04-27 20:33:09 +00:00
..
AAClipBench.cpp Revert "Revert "switch to new filltype for SkPath"" 2019-11-26 17:43:14 +00:00
AlternatingColorPatternBench.cpp Remove SkMin32/SkMax32 2020-02-06 17:31:51 +00:00
AndroidCodecBench.cpp Reland "Reland "SkSurface asynchronous read APIs allow client to extend pixel lifetime"" 2019-10-03 19:14:22 +00:00
AndroidCodecBench.h rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
BenchLogger.cpp rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
BenchLogger.h rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
Benchmark.cpp rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
Benchmark.h add unit scaling mode to benchmark/nanobench 2019-06-03 14:53:29 +00:00
BezierBench.cpp rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
BigPathBench.cpp rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
BitmapBench.cpp Remove SkMin32/SkMax32 2020-02-06 17:31:51 +00:00
BitmapRectBench.cpp Remove SkMin32/SkMax32 2020-02-06 17:31:51 +00:00
BitmapRegionDecoderBench.cpp rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
BitmapRegionDecoderBench.h rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
BlendmodeBench.cpp Use SkTextEncoding enum instead of macros. 2019-05-07 20:54:16 +00:00
BlurBench.cpp rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
BlurImageFilterBench.cpp Update benchmarks to use new filter factories 2019-08-05 16:41:25 +00:00
BlurRectBench.cpp rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
BlurRectsBench.cpp Revert "Reland "Revert "Use flat version of path-direction enum""" 2019-11-22 19:09:54 +00:00
BulkRectBench.cpp Plumb SkMatrixProvider throughout Ganesh 2020-04-20 13:48:40 +00:00
ChartBench.cpp Remove SkMin32/SkMax32 2020-02-06 17:31:51 +00:00
check_bench_regressions.py Adds dashboard link for one-line plot on each alert item. 2014-05-13 17:38:17 +00:00
ChecksumBench.cpp Add SkUNREACHABLE to definition of SK_ABORT. 2019-08-09 20:43:39 +00:00
ChromeBench.cpp more rect api simplifications 2019-08-25 10:12:57 +00:00
ClearBench.cpp Track if we need stencil on GrRenderTargetContext 2019-06-27 20:29:03 +00:00
ClipMaskBench.cpp rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
ClipStrategyBench.cpp rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
CmapBench.cpp Use SkTextEncoding enum instead of macros. 2019-05-07 20:54:16 +00:00
CodecBench.cpp rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
CodecBench.h rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
CodecBenchPriv.h rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
ColorFilterBench.cpp onProgram for SkGaussianColorFilter, plus gm and bench 2020-03-27 20:41:20 +00:00
ColorPrivBench.cpp rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
CompositingImagesBench.cpp rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
ControlBench.cpp rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
CoverageBench.cpp rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
CTConvertBench.cpp Add a colortype conversion bench 2019-08-26 15:41:54 +00:00
CubicKLMBench.cpp Move GrPathUtils, GrRect, and GrShape into src/gpu/geometry/ 2019-06-04 13:36:05 +00:00
CubicMapBench.cpp create outer forloop to support loops=-1 2019-07-09 14:41:07 +00:00
DashBench.cpp rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
DDLRecorderBench.cpp Stop including SkCanvas.h from GrTypesPriv.h 2020-03-30 20:43:34 +00:00
DisplacementBench.cpp Update benchmarks to use new filter factories 2019-08-05 16:41:25 +00:00
DrawBitmapAABench.cpp rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
EncodeBench.cpp rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
FontCacheBench.cpp Remove SkMin32/SkMax32 2020-02-06 17:31:51 +00:00
FSRectBench.cpp rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
GameBench.cpp clean up public m44 and camera api 2020-04-06 15:34:17 +00:00
GeometryBench.cpp Revert "Reland "Revert "Use flat version of path-direction enum""" 2019-11-22 19:09:54 +00:00
GMBench.cpp Clean up some gm factory use. 2019-08-13 15:57:37 +00:00
GMBench.h Clean up some gm factory use. 2019-08-13 15:57:37 +00:00
GradientBench.cpp Update benchmarks to use new filter factories 2019-08-05 16:41:25 +00:00
GrCCFillGeometryBench.cpp rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
GrMemoryPoolBench.cpp Reland "Avoid loop-dependent behavior in GrMemoryPoolBench" 2020-01-08 21:09:43 +00:00
GrMipMapBench.cpp rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
GrQuadBench.cpp Add GrQuad::bounds() benchmark 2020-01-22 18:23:55 +00:00
GrResourceCacheBench.cpp Reland "Move GrGpuResource GrSurface and GrTexture into src." 2020-03-05 19:16:21 +00:00
gUniqueGlyphIDs.h Make header files self-sufficient 2017-02-10 01:19:52 +00:00
HairlinePathBench.cpp rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
HardStopGradientBench_ScaleNumColors.cpp Update benchmarks to use new filter factories 2019-08-05 16:41:25 +00:00
HardStopGradientBench_ScaleNumHardStops.cpp rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
HardStopGradientBench_SpecialHardStops.cpp rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
ImageBench.cpp rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
ImageCacheBench.cpp rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
ImageCacheBudgetBench.cpp Remove maxCount resource cache limit 2019-09-03 14:59:51 +00:00
ImageCycleBench.cpp Expose the owning surface to a canvas? 2019-11-15 21:48:32 +00:00
ImageFilterCollapse.cpp Update benchmarks to use new filter factories 2019-08-05 16:41:25 +00:00
ImageFilterDAGBench.cpp Remove unused dstColorSpace parameter from makeTextureImage 2019-08-14 19:09:05 +00:00
InterpBench.cpp rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
JSONBench.cpp rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
LightingBench.cpp Update benchmarks to use new filter factories 2019-08-05 16:41:25 +00:00
LineBench.cpp rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
MagnifierBench.cpp Update benchmarks to use new filter factories 2019-08-05 16:41:25 +00:00
MathBench.cpp rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
Matrix44Bench.cpp clean up public m44 and camera api 2020-04-06 15:34:17 +00:00
MatrixBench.cpp more rect api simplifications 2019-08-25 10:12:57 +00:00
MatrixConvolutionBench.cpp Update benchmarks to use new filter factories 2019-08-05 16:41:25 +00:00
MemsetBench.cpp rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
MergeBench.cpp Update benchmarks to use new filter factories 2019-08-05 16:41:25 +00:00
microbench.json Fix the other microbench schema 2014-07-25 08:30:11 -07:00
MipMapBench.cpp rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
MorphologyBench.cpp Update benchmarks to use new filter factories 2019-08-05 16:41:25 +00:00
MutexBench.cpp rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
nanobench.cpp Revert "Revert "Revert "Revert "Don't build GL on Metal, Vulkan, Dawn, Direct3D bots"""" 2020-03-20 17:11:58 +00:00
nanobench.h rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
ParagraphBench.cpp re-run tools/rewrite_includes.py 2019-07-25 15:40:33 +00:00
PatchBench.cpp Stop including SkVertices.h from so many places 2020-04-02 14:07:46 +00:00
PathBench.cpp Remove SkMaxScalar and SkMinScalar 2020-02-06 15:43:22 +00:00
PathIterBench.cpp make pathiter bench a little more realistic 2019-08-20 18:19:55 +00:00
PathOpsBench.cpp rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
PathTextBench.cpp Remove SkExclusiveStrikePtr. Replace it with sk_sp<SkStrike> 2020-02-24 21:41:05 +00:00
PDFBench.cpp SkPDF: MakeShader uses Color4f 2019-05-30 14:52:29 +00:00
PerlinNoiseBench.cpp rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
PictureNestingBench.cpp rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
PictureOverheadBench.cpp remove SkLiteDL 2019-05-14 18:55:44 +00:00
PicturePlaybackBench.cpp rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
PolyUtilsBench.cpp More polyutils fixes 2019-05-01 18:02:05 +00:00
PremulAndUnpremulAlphaOpsBench.cpp rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
QuickRejectBench.cpp rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
ReadPixBench.cpp Reland "Reland "SkSurface asynchronous read APIs allow client to extend pixel lifetime"" 2019-10-03 19:14:22 +00:00
RecordingBench.cpp remove SkLiteDL 2019-05-14 18:55:44 +00:00
RecordingBench.h remove SkLiteDL 2019-05-14 18:55:44 +00:00
RectanizerBench.cpp Reland "Specialize SkRectanzier to SkRectanizerSkyline" 2020-01-23 15:28:26 +00:00
RectBench.cpp more rect api simplifications 2019-08-25 10:12:57 +00:00
RefCntBench.cpp rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
RegionBench.cpp rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
RegionContainBench.cpp more rect api simplifications 2019-08-25 10:12:57 +00:00
RepeatTileBench.cpp Remove SkMin32/SkMax32 2020-02-06 17:31:51 +00:00
ResultsWriter.h Don't keep "outResultsFile" open in nanobench 2019-10-24 16:09:02 +00:00
RotatedRectBench.cpp Add SkUNREACHABLE to definition of SK_ABORT. 2019-08-09 20:43:39 +00:00
RTreeBench.cpp make SkBBH a public interface 2020-02-12 16:31:05 +00:00
ScalarBench.cpp more rect api simplifications 2019-08-25 10:12:57 +00:00
ShaderMaskFilterBench.cpp rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
ShadowBench.cpp rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
ShaperBench.cpp Shaper Tests: fix g3 build 2019-05-03 18:10:46 +00:00
ShapesBench.cpp Remove SkTMin and SkTMax 2020-02-07 18:40:09 +00:00
Sk4fBench.cpp rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
SkGlyphCacheBench.cpp Make SkStrikeCache::Node be SkStrike. 2020-02-15 16:37:58 +00:00
SkGlyphCacheBench.h nanobench: option to execute directory of TextBlobTraces as benches 2019-10-25 13:28:49 +00:00
SKPAnimationBench.cpp remove unused (by clients) SkMultiPictureDraw 2019-11-15 18:18:36 +00:00
SKPAnimationBench.h re-run tools/rewrite_includes.py 2019-07-25 15:40:33 +00:00
SKPBench.cpp Remove SkTMin and SkTMax 2020-02-07 18:40:09 +00:00
SKPBench.h rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
skpbench.json Fix scale type in JSON format 2014-06-26 15:39:31 -07:00
SkSLBench.cpp renamed SkSL texture() and process() to sample() 2019-07-29 17:37:38 +00:00
SkSLInterpreterBench.cpp Switch back to stack-based SkSL interpreter 2020-04-03 17:20:04 +00:00
SkVMBench.cpp remove i16x2 ops 2020-04-13 19:08:11 +00:00
SortBench.cpp rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
StreamBench.cpp rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
StrokeBench.cpp rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
SwizzleBench.cpp rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
TableBench.cpp rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
TessellatePathBench.cpp Optimize GrTessellatePathOp's code to emit inner triangles 2020-04-27 20:33:09 +00:00
TextBlobBench.cpp Use SkTextEncoding enum instead of macros. 2019-05-07 20:54:16 +00:00
TileBench.cpp rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
TileImageFilterBench.cpp Update benchmarks to use new filter factories 2019-08-05 16:41:25 +00:00
TopoSortBench.cpp rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
TypefaceBench.cpp use std::make_unique 2019-12-12 22:32:45 +00:00
VertBench.cpp extend imageshader updater to handle perspective 2019-12-19 18:56:39 +00:00
VertexColorSpaceBench.cpp Rename outputView->writeView and outputSwizzle->writeSwizzle 2020-04-02 15:06:16 +00:00
WritePixelsBench.cpp Rename GrColorSpaceInfo -> GrColorInfo 2019-09-30 21:53:24 +00:00
WriterBench.cpp rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00