diff options
author | 2016-11-09 08:54:35 -0500 | |
---|---|---|
committer | 2016-11-09 15:10:37 +0000 | |
commit | ec2249fc73b36621af9efd4a9fc62e1be84b784d (patch) | |
tree | 39ef9c23c3b09397a4ae5725499ebb12d647c6bd /src | |
parent | 68b7a52a0b9355b357d4bd72bca479916d115d7c (diff) |
Move GrRenderTargetPriv::maxWindowRectangles to GrRenderTargetContextPriv & GrRenderTargetProxy
This removes a reason to call accessRenderTarget on the GrRenderTargetContext
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=4583
Change-Id: I6e8a53ffd5c1fea80f542b70e05744e2991f70f8
Reviewed-on: https://skia-review.googlesource.com/4583
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/gpu/GrClipStackClip.cpp | 6 | ||||
-rw-r--r-- | src/gpu/GrRenderTarget.cpp | 5 | ||||
-rw-r--r-- | src/gpu/GrRenderTargetContext.cpp | 5 | ||||
-rw-r--r-- | src/gpu/GrRenderTargetContextPriv.h | 2 | ||||
-rw-r--r-- | src/gpu/GrRenderTargetPriv.h | 1 | ||||
-rw-r--r-- | src/gpu/GrRenderTargetProxy.cpp | 4 |
6 files changed, 14 insertions, 9 deletions
diff --git a/src/gpu/GrClipStackClip.cpp b/src/gpu/GrClipStackClip.cpp index 669a9c23a6..133c4f706f 100644 --- a/src/gpu/GrClipStackClip.cpp +++ b/src/gpu/GrClipStackClip.cpp @@ -273,14 +273,12 @@ bool GrClipStackClip::apply(GrContext* context, GrRenderTargetContext* renderTar return false; } - GrRenderTarget* rt = renderTargetContext->accessRenderTarget(); - const SkScalar clipX = SkIntToScalar(fOrigin.x()), clipY = SkIntToScalar(fOrigin.y()); SkRect clipSpaceDevBounds = devBounds.makeOffset(clipX, clipY); const GrReducedClip reducedClip(*fStack, clipSpaceDevBounds, - rt->renderTargetPriv().maxWindowRectangles()); + renderTargetContext->priv().maxWindowRectangles()); if (reducedClip.hasIBounds() && !GrClip::IsInsideClip(reducedClip.ibounds(), clipSpaceDevBounds)) { @@ -357,6 +355,8 @@ bool GrClipStackClip::apply(GrContext* context, GrRenderTargetContext* renderTar // if alpha clip mask creation fails fall through to the non-AA code paths } + GrRenderTarget* rt = renderTargetContext->accessRenderTarget(); + // use the stencil clip if we can't represent the clip as a rectangle. if (!context->resourceProvider()->attachStencilAttachment(rt)) { SkDebugf("WARNING: failed to attach stencil buffer for clip mask. Clip will be ignored.\n"); diff --git a/src/gpu/GrRenderTarget.cpp b/src/gpu/GrRenderTarget.cpp index f15e3b01bf..f495cd34bb 100644 --- a/src/gpu/GrRenderTarget.cpp +++ b/src/gpu/GrRenderTarget.cpp @@ -118,8 +118,3 @@ GrRenderTargetPriv::getMultisampleSpecs(const GrPipeline& pipeline) const { return specs; } -int GrRenderTargetPriv::maxWindowRectangles() const { - return (this->flags() & Flags::kWindowRectsSupport) ? - fRenderTarget->getGpu()->caps()->maxWindowRectangles() : 0; -} - diff --git a/src/gpu/GrRenderTargetContext.cpp b/src/gpu/GrRenderTargetContext.cpp index 4c86cbc464..3bc6ad369e 100644 --- a/src/gpu/GrRenderTargetContext.cpp +++ b/src/gpu/GrRenderTargetContext.cpp @@ -579,6 +579,11 @@ void GrRenderTargetContext::drawRect(const GrClip& clip, this->internalDrawPath(clip, paint, viewMatrix, path, *style); } +int GrRenderTargetContextPriv::maxWindowRectangles() const { + return fRenderTargetContext->fRenderTargetProxy->maxWindowRectangles( + *fRenderTargetContext->fContext->caps()); +} + void GrRenderTargetContextPriv::clearStencilClip(const GrFixedClip& clip, bool insideStencilMask) { ASSERT_SINGLE_OWNER_PRIV RETURN_IF_ABANDONED_PRIV diff --git a/src/gpu/GrRenderTargetContextPriv.h b/src/gpu/GrRenderTargetContextPriv.h index 83a334b012..802cba0d3e 100644 --- a/src/gpu/GrRenderTargetContextPriv.h +++ b/src/gpu/GrRenderTargetContextPriv.h @@ -80,6 +80,8 @@ public: SkBudgeted isBudgeted() const; + int maxWindowRectangles() const; + void testingOnly_drawBatch(const GrPaint&, GrDrawBatch* batch, const GrUserStencilSettings* = nullptr, diff --git a/src/gpu/GrRenderTargetPriv.h b/src/gpu/GrRenderTargetPriv.h index 19e72637f3..89f4d5289e 100644 --- a/src/gpu/GrRenderTargetPriv.h +++ b/src/gpu/GrRenderTargetPriv.h @@ -40,7 +40,6 @@ public: typedef GrRenderTarget::Flags Flags; Flags flags() const { return fRenderTarget->fFlags; } - int maxWindowRectangles() const; private: explicit GrRenderTargetPriv(GrRenderTarget* renderTarget) : fRenderTarget(renderTarget) {} diff --git a/src/gpu/GrRenderTargetProxy.cpp b/src/gpu/GrRenderTargetProxy.cpp index 669f422371..8eb335de17 100644 --- a/src/gpu/GrRenderTargetProxy.cpp +++ b/src/gpu/GrRenderTargetProxy.cpp @@ -36,6 +36,10 @@ GrRenderTargetProxy::GrRenderTargetProxy(sk_sp<GrSurface> surf) , fFlags(fTarget->asRenderTarget()->renderTargetPriv().flags()) { } +int GrRenderTargetProxy::maxWindowRectangles(const GrCaps& caps) const { + return (fFlags & GrRenderTarget::Flags::kWindowRectsSupport) ? caps.maxWindowRectangles() : 0; +} + GrRenderTarget* GrRenderTargetProxy::instantiate(GrTextureProvider* texProvider) { SkASSERT(fDesc.fFlags & GrSurfaceFlags::kRenderTarget_GrSurfaceFlag); |