diff options
author | Chris Dalton <csmartdalton@google.com> | 2017-07-14 15:17:41 -0600 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2017-07-14 21:45:35 +0000 |
commit | 1a325d25b941ef801b3e9b2c0342da43cf35cdba (patch) | |
tree | 3f65d36541399e1ae6a529a534119815a2c5ba36 /src/gpu/GrPathRendererChain.cpp | |
parent | 588fb040b3ad410cdb10c87f9a7884b6eb825e90 (diff) |
Coverage counting path renderer
Initial implementation of a GPU path renderer that draws antialiased
paths by counting coverage in an offscreen buffer.
Initially disabled until it has had time to soak.
Bug: skia:
Change-Id: I003d8cfdf8dc62641581b5ea2dc4f0aa00108df6
Reviewed-on: https://skia-review.googlesource.com/21541
Commit-Queue: Chris Dalton <csmartdalton@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
Diffstat (limited to 'src/gpu/GrPathRendererChain.cpp')
-rw-r--r-- | src/gpu/GrPathRendererChain.cpp | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/src/gpu/GrPathRendererChain.cpp b/src/gpu/GrPathRendererChain.cpp index 076dea7b82..eda7a65319 100644 --- a/src/gpu/GrPathRendererChain.cpp +++ b/src/gpu/GrPathRendererChain.cpp @@ -12,8 +12,11 @@ #include "GrShaderCaps.h" #include "gl/GrGLCaps.h" #include "GrContext.h" +#include "GrContextPriv.h" #include "GrGpu.h" +#include "ccpr/GrCoverageCountingPathRenderer.h" + #include "ops/GrAAConvexPathRenderer.h" #include "ops/GrAAHairLinePathRenderer.h" #include "ops/GrAALinearizingConvexPathRenderer.h" @@ -56,6 +59,12 @@ GrPathRendererChain::GrPathRendererChain(GrContext* context, const Options& opti if (options.fGpuPathRenderers & GpuPathRenderers::kSmall) { fChain.push_back(sk_make_sp<GrSmallPathRenderer>()); } + if (options.fGpuPathRenderers & Options::GpuPathRenderers::kCoverageCounting) { + if (auto ccpr = GrCoverageCountingPathRenderer::CreateIfSupported(*context->caps())) { + context->contextPriv().addOnFlushCallbackObject(ccpr.get()); + fChain.push_back(std::move(ccpr)); + } + } if (options.fGpuPathRenderers & GpuPathRenderers::kTessellating) { fChain.push_back(sk_make_sp<GrTessellatingPathRenderer>()); } |