aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Chris Dalton <csmartdalton@google.com>2018-07-18 12:51:02 -0600
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2018-07-18 19:57:52 +0000
commit880b9d302fadd6449a511b8664682f16cde7dd9c (patch)
tree3d77a92d7b8b17e107cf07181ed3005e3d278aab
parentd789550da4bf666ca11487ddcb5dd6b9b13ec3d7 (diff)
Add kAAHairline to GpuPathRenderers
With the upcoming ccpr stroking, this will no longer be the only path renderer that can handle hairlines. Bug: skia: Change-Id: Idf2543f053c8603c80fcd647ca18ffd9860a85f3 Reviewed-on: https://skia-review.googlesource.com/142246 Reviewed-by: Brian Osman <brianosman@google.com> Commit-Queue: Chris Dalton <csmartdalton@google.com>
-rw-r--r--include/private/GrTypesPriv.h11
-rw-r--r--src/gpu/GrPathRendererChain.cpp7
-rw-r--r--tools/flags/SkCommonFlags.cpp6
-rw-r--r--tools/flags/SkCommonFlagsGpu.h22
4 files changed, 23 insertions, 23 deletions
diff --git a/include/private/GrTypesPriv.h b/include/private/GrTypesPriv.h
index ee6bfd8097..4061f289e9 100644
--- a/include/private/GrTypesPriv.h
+++ b/include/private/GrTypesPriv.h
@@ -972,11 +972,12 @@ enum class GpuPathRenderers {
kNone = 0, // Always use sofware masks and/or GrDefaultPathRenderer.
kDashLine = 1 << 0,
kStencilAndCover = 1 << 1,
- kAAConvex = 1 << 2,
- kAALinearizing = 1 << 3,
- kSmall = 1 << 4,
- kCoverageCounting = 1 << 5,
- kTessellating = 1 << 6,
+ kCoverageCounting = 1 << 2,
+ kAAHairline = 1 << 3,
+ kAAConvex = 1 << 4,
+ kAALinearizing = 1 << 5,
+ kSmall = 1 << 6,
+ kTessellating = 1 << 7,
kAll = (kTessellating | (kTessellating - 1)),
kDefault = kAll
diff --git a/src/gpu/GrPathRendererChain.cpp b/src/gpu/GrPathRendererChain.cpp
index 6301045cb7..60c935ab08 100644
--- a/src/gpu/GrPathRendererChain.cpp
+++ b/src/gpu/GrPathRendererChain.cpp
@@ -34,10 +34,6 @@ GrPathRendererChain::GrPathRendererChain(GrContext* context, const Options& opti
fChain.push_back(std::move(pr));
}
}
-
- // AA hairline path renderer is very specialized - no other renderer can do this job well
- fChain.push_back(sk_make_sp<GrAAHairLinePathRenderer>());
-
if (options.fGpuPathRenderers & GpuPathRenderers::kCoverageCounting) {
using AllowCaching = GrCoverageCountingPathRenderer::AllowCaching;
if (auto ccpr = GrCoverageCountingPathRenderer::CreateIfSupported(
@@ -47,6 +43,9 @@ GrPathRendererChain::GrPathRendererChain(GrContext* context, const Options& opti
fChain.push_back(std::move(ccpr));
}
}
+ if (options.fGpuPathRenderers & GpuPathRenderers::kAAHairline) {
+ fChain.push_back(sk_make_sp<GrAAHairLinePathRenderer>());
+ }
if (options.fGpuPathRenderers & GpuPathRenderers::kAAConvex) {
fChain.push_back(sk_make_sp<GrAAConvexPathRenderer>());
}
diff --git a/tools/flags/SkCommonFlags.cpp b/tools/flags/SkCommonFlags.cpp
index ed4d169585..a2c2375e10 100644
--- a/tools/flags/SkCommonFlags.cpp
+++ b/tools/flags/SkCommonFlags.cpp
@@ -161,10 +161,10 @@ DEFINE_bool(cachePathMasks, true, "Allows path mask textures to be cached in GPU
DEFINE_bool(noGS, false, "Disables support for geometry shaders.");
-DEFINE_string(pr, "default",
+DEFINE_string(pr, "all",
"Set of enabled gpu path renderers. Defined as a list of: "
- "[~]all [~]default [~]dashline [~]nvpr [~]aaconvex "
- "[~]aalinearizing [~]small [~]tess]");
+ "[~]none [~]dashline [~]nvpr [~]ccpr [~]aahairline [~]aaconvex [~]aalinearizing "
+ "[~]small [~]tess] [~]all");
void SetCtxOptionsFromCommonFlags(GrContextOptions* ctxOptions) {
static std::unique_ptr<SkExecutor> gGpuExecutor = (0 != FLAGS_gpuThreads)
diff --git a/tools/flags/SkCommonFlagsGpu.h b/tools/flags/SkCommonFlagsGpu.h
index 23800ec911..cb8a439ccc 100644
--- a/tools/flags/SkCommonFlagsGpu.h
+++ b/tools/flags/SkCommonFlagsGpu.h
@@ -18,26 +18,26 @@ DECLARE_bool(noGS);
DECLARE_string(pr);
inline GpuPathRenderers get_named_pathrenderers_flags(const char* name) {
- if (!strcmp(name, "all")) {
- return GpuPathRenderers::kAll;
- } else if (!strcmp(name, "default")) {
- return GpuPathRenderers::kDefault;
+ if (!strcmp(name, "none")) {
+ return GpuPathRenderers::kNone;
} else if (!strcmp(name, "dashline")) {
return GpuPathRenderers::kDashLine;
} else if (!strcmp(name, "nvpr")) {
return GpuPathRenderers::kStencilAndCover;
+ } else if (!strcmp(name, "ccpr")) {
+ return GpuPathRenderers::kCoverageCounting;
+ } else if (!strcmp(name, "aahairline")) {
+ return GpuPathRenderers::kAAHairline;
} else if (!strcmp(name, "aaconvex")) {
return GpuPathRenderers::kAAConvex;
} else if (!strcmp(name, "aalinearizing")) {
return GpuPathRenderers::kAALinearizing;
} else if (!strcmp(name, "small")) {
return GpuPathRenderers::kSmall;
- } else if (!strcmp(name, "ccpr")) {
- return GpuPathRenderers::kCoverageCounting;
} else if (!strcmp(name, "tess")) {
return GpuPathRenderers::kTessellating;
- } else if (!strcmp(name, "none")) {
- return GpuPathRenderers::kNone;
+ } else if (!strcmp(name, "all")) {
+ return GpuPathRenderers::kAll;
}
SK_ABORT(SkStringPrintf("error: unknown named path renderer \"%s\"\n", name).c_str());
return GpuPathRenderers::kNone;
@@ -45,10 +45,10 @@ inline GpuPathRenderers get_named_pathrenderers_flags(const char* name) {
inline GpuPathRenderers CollectGpuPathRenderersFromFlags() {
if (FLAGS_pr.isEmpty()) {
- return GpuPathRenderers::kDefault;
+ return GpuPathRenderers::kAll;
}
- GpuPathRenderers gpuPathRenderers = '~' == FLAGS_pr[0][0] ?
- GpuPathRenderers::kDefault : GpuPathRenderers::kNone;
+ GpuPathRenderers gpuPathRenderers = '~' == FLAGS_pr[0][0]
+ ? GpuPathRenderers::kAll : GpuPathRenderers::kNone;
for (int i = 0; i < FLAGS_pr.count(); ++i) {
const char* name = FLAGS_pr[i];
if (name[0] == '~') {