diff options
author | robertphillips <robertphillips@google.com> | 2016-05-11 05:21:56 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-05-11 05:21:56 -0700 |
commit | e19aecdd13d83b2235faf3e2601100a2fd980b7b (patch) | |
tree | 75f24881e08d8c287b53bc3d055c68b3406ae8bf /src/gpu/GrPathRenderer.h | |
parent | 3e11da7fa9b7ab26df6d6197c3f6a71d0826c97e (diff) |
Revert of Separate user and raw stencil settings (patchset #8 id:140001 of https://codereview.chromium.org/1962243002/ )
Reason for revert:
This seems to be breaking nanobench on the Windows bots with:
Caught exception 3221225477 EXCEPTION_ACCESS_VIOLATION
GrDrawTarget::stencilPath +c7
GrStencilAndCoverPathRenderer::onDrawPath +fd
GrDrawContext::internalDrawPath +509
GrDrawContext::drawPath +223
GrBlurUtils::drawPathWithMaskFilter +250
SkGpuDevice::drawPath +2ea
SkCanvas::onDrawPath +2e3
SkRecordDraw +2e6
SkBigPicture::playback +e5
SkCanvas::onDrawPicture +12c
SkCanvas::drawPicture +145
SkRecordDraw +2e6
SkBigPicture::playback +e5
SkCanvas::onDrawPicture +12c
SkCanvas::drawPicture +145
SkRecordDraw +261
SkBigPicture::playback +e5
SkCanvas::onDrawPicture +12c
SkCanvas::drawPicture +145
SkMultiPictureDraw::draw +bf
SKPBench::drawMPDPicture +1e0
SKPBench::onDraw +34
Benchmark::draw +32
time +92
setup_gpu_bench +6e
nanobench_main +77b
Original issue's description:
> Separate user and raw stencil settings
>
> Adds a new GrUserStencilSettings class that describes in abstract terms
> how a draw will use the stencil (e.g. kAlwaysIfInClip, kSetClipBit,
> etc.). GrPipelineBuilder now only defines the GrUserStencilSettings.
> When the GrPipeline is finalized, the user stencil settings are then
> translated into concrete GrStencilSettings.
>
> At this point, GrClipMaskManager only needs to tell the GrAppliedClip
> whether or not there is a stencil clip. It does not need to modify
> stencil settings and GrPipelineBuilder does not need
> AutoRestoreStencil.
>
> This is one step of the stencil overhaul. In the future it will also
> allow us to clean up the special case handling for nvpr and the
> stateful fClipMode member of GrClipMaskManager.
>
> BUG=skia:
> GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1962243002
>
> Committed: https://skia.googlesource.com/skia/+/12dbb3947e1aaf205b4fcf13b40e54e50650eb37
TBR=bsalomon@google.com,cdalton@nvidia.com
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=skia:
Review-Url: https://codereview.chromium.org/1969693003
Diffstat (limited to 'src/gpu/GrPathRenderer.h')
-rw-r--r-- | src/gpu/GrPathRenderer.h | 25 |
1 files changed, 12 insertions, 13 deletions
diff --git a/src/gpu/GrPathRenderer.h b/src/gpu/GrPathRenderer.h index a7609db658..3bc02306e6 100644 --- a/src/gpu/GrPathRenderer.h +++ b/src/gpu/GrPathRenderer.h @@ -9,6 +9,7 @@ #define GrPathRenderer_DEFINED #include "GrDrawTarget.h" +#include "GrStencil.h" #include "GrStyle.h" #include "SkDrawProcs.h" @@ -81,7 +82,7 @@ public: bool fAntiAlias; // These next two are only used by GrStencilAndCoverPathRenderer - bool fHasUserStencilSettings; + bool fIsStencilDisabled; bool fIsStencilBufferMSAA; void validate() const { @@ -154,11 +155,11 @@ public: canArgs.fStyle = args.fStyle; canArgs.fAntiAlias = args.fAntiAlias; - canArgs.fHasUserStencilSettings = args.fPipelineBuilder->hasUserStencilSettings(); + canArgs.fIsStencilDisabled = args.fPipelineBuilder->getStencil().isDisabled(); canArgs.fIsStencilBufferMSAA = args.fPipelineBuilder->getRenderTarget()->isStencilBufferMultisampled(); SkASSERT(this->canDrawPath(canArgs)); - if (args.fPipelineBuilder->hasUserStencilSettings()) { + if (!args.fPipelineBuilder->getStencil().isDisabled()) { SkASSERT(kNoRestriction_StencilSupport == this->getStencilSupport(*args.fPath)); SkASSERT(args.fStyle->isSimpleFill()); } @@ -259,16 +260,14 @@ private: * kStencilOnly in onGetStencilSupport(). */ virtual void onStencilPath(const StencilPathArgs& args) { - static constexpr GrUserStencilSettings kIncrementStencil( - GrUserStencilSettings::StaticInit< - 0xffff, - GrUserStencilTest::kAlways, - 0xffff, - GrUserStencilOp::kReplace, - GrUserStencilOp::kReplace, - 0xffff>() - ); - args.fPipelineBuilder->setUserStencil(&kIncrementStencil); + static constexpr GrStencilSettings kIncrementStencil( + kReplace_StencilOp, + kReplace_StencilOp, + kAlways_StencilFunc, + 0xffff, + 0xffff, + 0xffff); + args.fPipelineBuilder->setStencil(kIncrementStencil); args.fPipelineBuilder->setDisableColorXPFactory(); DrawPathArgs drawArgs; drawArgs.fTarget = args.fTarget; |