Index: src/gpu/gl/GrGLGpu.cpp |
diff --git a/src/gpu/gl/GrGLGpu.cpp b/src/gpu/gl/GrGLGpu.cpp |
index 3e44138328d884a36bfbad1e1820f3e0d6fa8aa4..71e46c54b95f8ee99774662225ae8536382b88c7 100644 |
--- a/src/gpu/gl/GrGLGpu.cpp |
+++ b/src/gpu/gl/GrGLGpu.cpp |
@@ -11,6 +11,7 @@ |
#include "GrGLGpuCommandBuffer.h" |
#include "GrGLStencilAttachment.h" |
#include "GrGLTextureRenderTarget.h" |
+#include "GrFixedClip.h" |
#include "GrGpuResourcePriv.h" |
#include "GrMesh.h" |
#include "GrPipeline.h" |
@@ -2193,17 +2194,15 @@ void GrGLGpu::disableScissor() { |
} |
} |
-void GrGLGpu::clear(const SkIRect& rect, GrColor color, GrRenderTarget* target) { |
+void GrGLGpu::clear(const GrFixedClip& clip, GrColor color, GrRenderTarget* target) { |
this->handleDirtyContext(); |
// parent class should never let us get here with no RT |
SkASSERT(target); |
GrGLRenderTarget* glRT = static_cast<GrGLRenderTarget*>(target); |
- this->flushRenderTarget(glRT, &rect); |
- GrScissorState scissorState; |
- scissorState.set(rect); |
- this->flushScissor(scissorState, glRT->getViewport(), glRT->origin()); |
+ this->flushRenderTarget(glRT, clip.scissorEnabled() ? &clip.scissorRect() : nullptr); |
+ this->flushScissor(clip.scissorState(), glRT->getViewport(), glRT->origin()); |
this->disableWindowRectangles(); |
GrGLfloat r, g, b, a; |
@@ -2236,7 +2235,9 @@ void GrGLGpu::clearStencil(GrRenderTarget* target) { |
fHWStencilSettings.invalidate(); |
} |
-void GrGLGpu::clearStencilClip(const SkIRect& rect, bool insideClip, GrRenderTarget* target) { |
+void GrGLGpu::clearStencilClip(const GrFixedClip& clip, |
+ bool insideStencilMask, |
+ GrRenderTarget* target) { |
SkASSERT(target); |
this->handleDirtyContext(); |
@@ -2257,7 +2258,7 @@ void GrGLGpu::clearStencilClip(const SkIRect& rect, bool insideClip, GrRenderTar |
static const GrGLint clipStencilMask = ~0; |
#endif |
GrGLint value; |
- if (insideClip) { |
+ if (insideStencilMask) { |
value = (1 << (stencilBitCount - 1)); |
} else { |
value = 0; |
@@ -2265,9 +2266,7 @@ void GrGLGpu::clearStencilClip(const SkIRect& rect, bool insideClip, GrRenderTar |
GrGLRenderTarget* glRT = static_cast<GrGLRenderTarget*>(target); |
this->flushRenderTarget(glRT, &SkIRect::EmptyIRect()); |
- GrScissorState scissorState; |
- scissorState.set(rect); |
- this->flushScissor(scissorState, glRT->getViewport(), glRT->origin()); |
+ this->flushScissor(clip.scissorState(), glRT->getViewport(), glRT->origin()); |
this->disableWindowRectangles(); |
GL_CALL(StencilMask((uint32_t) clipStencilMask)); |