From 7afb5aa201e4b59397cbd8480e121d7501a227e7 Mon Sep 17 00:00:00 2001 From: joshualitt Date: Mon, 27 Oct 2014 07:17:17 -0700 Subject: Clip mask manager sets stencil on draw type BUG=skia: Review URL: https://codereview.chromium.org/676983003 --- src/gpu/GrGpu.cpp | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) (limited to 'src/gpu/GrGpu.cpp') diff --git a/src/gpu/GrGpu.cpp b/src/gpu/GrGpu.cpp index 65100489f4..d8ffe6745d 100644 --- a/src/gpu/GrGpu.cpp +++ b/src/gpu/GrGpu.cpp @@ -298,10 +298,12 @@ const GrIndexBuffer* GrGpu::getQuadIndexBuffer() const { //////////////////////////////////////////////////////////////////////////////// -bool GrGpu::setupClipAndFlushState(DrawType type, const GrDeviceCoordTexture* dstCopy, +bool GrGpu::setupClipAndFlushState(DrawType type, + const GrDeviceCoordTexture* dstCopy, GrDrawState::AutoRestoreEffects* are, + GrDrawState::AutoRestoreStencil* ars, const SkRect* devBounds) { - if (!fClipMaskManager.setupClipping(this->getClip(), are, devBounds)) { + if (!fClipMaskManager.setupClipping(this->getClip(), are, ars, devBounds)) { return false; } @@ -344,8 +346,9 @@ void GrGpu::geometrySourceWillPop(const GeometrySrcState& restoredState) { void GrGpu::onDraw(const DrawInfo& info) { this->handleDirtyContext(); GrDrawState::AutoRestoreEffects are; + GrDrawState::AutoRestoreStencil asr; if (!this->setupClipAndFlushState(PrimTypeToDrawType(info.primitiveType()), - info.getDstCopy(), &are, info.getDevBounds())) { + info.getDstCopy(), &are, &asr, info.getDevBounds())) { return; } this->onGpuDraw(info); @@ -355,7 +358,8 @@ void GrGpu::onStencilPath(const GrPath* path, SkPath::FillType fill) { this->handleDirtyContext(); GrDrawState::AutoRestoreEffects are; - if (!this->setupClipAndFlushState(kStencilPath_DrawType, NULL, &are, NULL)) { + GrDrawState::AutoRestoreStencil asr; + if (!this->setupClipAndFlushState(kStencilPath_DrawType, NULL, &are, &asr, NULL)) { return; } @@ -370,7 +374,8 @@ void GrGpu::onDrawPath(const GrPath* path, SkPath::FillType fill, drawState()->setDefaultVertexAttribs(); GrDrawState::AutoRestoreEffects are; - if (!this->setupClipAndFlushState(kDrawPath_DrawType, dstCopy, &are, NULL)) { + GrDrawState::AutoRestoreStencil asr; + if (!this->setupClipAndFlushState(kDrawPath_DrawType, dstCopy, &are, &asr, NULL)) { return; } @@ -386,7 +391,8 @@ void GrGpu::onDrawPaths(const GrPathRange* pathRange, drawState()->setDefaultVertexAttribs(); GrDrawState::AutoRestoreEffects are; - if (!this->setupClipAndFlushState(kDrawPaths_DrawType, dstCopy, &are, NULL)) { + GrDrawState::AutoRestoreStencil asr; + if (!this->setupClipAndFlushState(kDrawPaths_DrawType, dstCopy, &are, &asr, NULL)) { return; } -- cgit v1.2.3