From 89a0e72287e991cfa2f860f92fad545ca59defe1 Mon Sep 17 00:00:00 2001 From: Yuqian Li Date: Wed, 11 Jan 2017 10:58:31 -0500 Subject: Implement Analytic AA for General Paths (with Guard against Chrome) I've set up a SK_SUPPORT_LEGACY_AAA flag to guard against Chromium layout tests. I also set that flag in this CL so theoretically this CL won't trigger any GM changes. I'll use this to verify my guard, and remove that flag and actually enables concave AAA in a future CL. When enabled, for most simple concave paths (e.g., rectangle stroke, rrect stroke, sawtooth, stars...), the Analytic AA achieves 1.3x-2x speedup, and they look much prettier. And they probably are the majority in our use cases by number. But they probably are not the majority by time cost; a single complicated path may cost 10x-100x more time to render than a rectangle stroke... For those complicated paths, we fall back to supersampling by default as we're likely to be 1.1-1.2x slower and the quality improvement is not visually significant. However, one can use gSkForceAnalyticAA to disable that fallback. BUG=skia: Change-Id: If9549a3acc4a187cfaf7eb51890c148da3083d31 Reviewed-on: https://skia-review.googlesource.com/6091 Reviewed-by: Mike Reed Commit-Queue: Yuqian Li --- tools/flags/SkCommonFlags.cpp | 4 ++++ tools/flags/SkCommonFlags.h | 1 + 2 files changed, 5 insertions(+) (limited to 'tools/flags') diff --git a/tools/flags/SkCommonFlags.cpp b/tools/flags/SkCommonFlags.cpp index 52a5388ddf..0148bcd820 100644 --- a/tools/flags/SkCommonFlags.cpp +++ b/tools/flags/SkCommonFlags.cpp @@ -68,6 +68,10 @@ DEFINE_bool2(pre_log, p, false, "Log before running each test. May be incomprehe DEFINE_bool(analyticAA, true, "If false, disable analytic anti-aliasing"); +DEFINE_bool(forceAnalyticAA, false, "Force analytic anti-aliasing even if the path is complicated: " + "whether it's concave or convex, we consider a path complicated" + "if its number of points is comparable to its resolution."); + bool CollectImages(SkCommandLineFlags::StringArray images, SkTArray* output) { SkASSERT(output); diff --git a/tools/flags/SkCommonFlags.h b/tools/flags/SkCommonFlags.h index 1a707c8586..92ac141dad 100644 --- a/tools/flags/SkCommonFlags.h +++ b/tools/flags/SkCommonFlags.h @@ -33,6 +33,7 @@ DECLARE_bool(veryVerbose); DECLARE_string(writePath); DECLARE_bool(pre_log); DECLARE_bool(analyticAA); +DECLARE_bool(forceAnalyticAA); DECLARE_string(key); DECLARE_string(properties); -- cgit v1.2.3