skia2/bench
Chris Dalton b96995d05f Handle tessellated paths that require more segments than are supported
Adds a method to determine the worst-case number of tessellated line
segments that a path might require, and disables hardware tessellation
if it is more segments than are supported (falling back on indirect
draw shaders).

If the path requires even more segments than are supported by the
indirect draw shaders (1024), we crop the path to the viewport. The
required number of segments is proportional to the square root of the
bounding box's diagonal, so we won't start cropping paths until their
device-space bounding box diagonal is nearly 175,000 pixels long.

Change-Id: I8a9435e70bb93dda3464cc11a3e44fbe511744ae
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/293691
Reviewed-by: Greg Daniel <egdaniel@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
2020-06-05 15:33:19 +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 Move SkBitmapRegionCodec into client_utils/android 2020-05-20 20:06:48 +00:00
BitmapRegionDecoderBench.h Move SkBitmapRegionCodec into client_utils/android 2020-05-20 20:06:48 +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 Reland "GrClips provided as pointers to GrRTC" 2020-05-29 15:09:54 +00:00
ChartBench.cpp Remove SkMin32/SkMax32 2020-02-06 17:31:51 +00:00
check_bench_regressions.py
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 hide savelayer's clipmask fields 2020-05-31 14:06:42 +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 Added SkSL unpremul intrinsic 2020-05-14 20:57:15 +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 Plumbing SkMatrixProvider into the raster backend 2020-05-13 18:05:32 +00:00
CreateBackendTextureBench.cpp Update internal skia uses to use flushAndSubmit and submit calls. 2020-05-14 20:26:44 +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 Revert "Revert "move onto new factories for SkMatrix"" 2020-05-21 16:58:39 +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 Revert "Revert "move onto new factories for SkMatrix"" 2020-05-21 16:58:39 +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 Revert "Revert "move onto new factories for SkMatrix"" 2020-05-21 16:58:39 +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 Update internal skia uses to use flushAndSubmit and submit calls. 2020-05-14 20:26:44 +00:00
ImageCycleBench.cpp Update internal skia uses to use flushAndSubmit and submit calls. 2020-05-14 20:26:44 +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 Fix SkBitSet. 2020-05-05 20:04:11 +00:00
Matrix44Bench.cpp clean up public m44 and camera api 2020-04-06 15:34:17 +00:00
MatrixBench.cpp Revert "Revert "move onto new factories for SkMatrix"" 2020-05-21 16:58:39 +00:00
MatrixConvolutionBench.cpp Add benchmarks for large kernel matrix convolutions 2020-05-01 20:40:04 +00:00
MemsetBench.cpp Mark SkStringPrintf as SK_PRINTF_LIKE 2020-05-12 15:22:14 +00:00
MergeBench.cpp Update benchmarks to use new filter factories 2019-08-05 16:41:25 +00:00
microbench.json
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 Revert "replace SkSharedMutex" 2020-04-29 18:50:39 +00:00
nanobench.cpp Move SkBitmapRegionCodec into client_utils/android 2020-05-20 20:06:48 +00:00
nanobench.h rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
PatchBench.cpp Stop including SkVertices.h from so many places 2020-04-02 14:07:46 +00:00
PathBench.cpp Revert "Revert "move onto new factories for SkMatrix"" 2020-05-21 16:58:39 +00:00
PathIterBench.cpp Update PathIterBench to use the new RangeIter instead of RawIter 2020-05-07 17:59:20 +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 Revert "Revert "move onto new factories for SkMatrix"" 2020-05-21 16:58:39 +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 GrRectanizerPow2 2020-05-19 18:35:13 +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 Revert "Revert "move onto new factories for SkMatrix"" 2020-05-21 16:58:39 +00:00
SKPAnimationBench.h re-run tools/rewrite_includes.py 2019-07-25 15:40:33 +00:00
SKPBench.cpp Revert "Revert "move onto new factories for SkMatrix"" 2020-05-21 16:58:39 +00:00
SKPBench.h rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
skpbench.json
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 Handle tessellated paths that require more segments than are supported 2020-06-05 15:33:19 +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 Update internal skia uses to use flushAndSubmit and submit calls. 2020-05-14 20:26:44 +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