aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/gpu/gl/GrGLGpu.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/gpu/gl/GrGLGpu.cpp')
-rw-r--r--src/gpu/gl/GrGLGpu.cpp30
1 files changed, 14 insertions, 16 deletions
diff --git a/src/gpu/gl/GrGLGpu.cpp b/src/gpu/gl/GrGLGpu.cpp
index 6419aa6b52..21d2f6327b 100644
--- a/src/gpu/gl/GrGLGpu.cpp
+++ b/src/gpu/gl/GrGLGpu.cpp
@@ -1327,13 +1327,13 @@ GrIndexBuffer* GrGLGpu::onCreateIndexBuffer(size_t size, bool dynamic) {
void GrGLGpu::flushScissor(const GrScissorState& scissorState,
const GrGLIRect& rtViewport,
GrSurfaceOrigin rtOrigin) {
- if (scissorState.fEnabled) {
+ if (scissorState.enabled()) {
GrGLIRect scissor;
scissor.setRelativeTo(rtViewport,
- scissorState.fRect.fLeft,
- scissorState.fRect.fTop,
- scissorState.fRect.width(),
- scissorState.fRect.height(),
+ scissorState.rect().fLeft,
+ scissorState.rect().fTop,
+ scissorState.rect().width(),
+ scissorState.rect().height(),
rtOrigin);
// if the scissor fully contains the viewport then we fall through and
// disable the scissor test.
@@ -1489,9 +1489,8 @@ void GrGLGpu::onClear(GrRenderTarget* target, const SkIRect* rect, GrColor color
this->flushRenderTarget(glRT, rect);
GrScissorState scissorState;
- scissorState.fEnabled = SkToBool(rect);
- if (scissorState.fEnabled) {
- scissorState.fRect = *rect;
+ if (rect) {
+ scissorState.set(*rect);
}
this->flushScissor(scissorState, glRT->getViewport(), glRT->origin());
@@ -1602,8 +1601,7 @@ void GrGLGpu::onClearStencilClip(GrRenderTarget* target, const SkIRect& rect, bo
this->flushRenderTarget(glRT, &SkIRect::EmptyIRect());
GrScissorState scissorState;
- scissorState.fEnabled = true;
- scissorState.fRect = rect;
+ scissorState.set(rect);
this->flushScissor(scissorState, glRT->getViewport(), glRT->origin());
GL_CALL(StencilMask((uint32_t) clipStencilMask));
@@ -1930,18 +1928,18 @@ void GrGLGpu::onResolveRenderTarget(GrRenderTarget* target) {
fHWBoundRenderTargetUniqueID = SK_InvalidUniqueID;
const GrGLIRect& vp = rt->getViewport();
const SkIRect dirtyRect = rt->getResolveRect();
- GrGLIRect r;
- r.setRelativeTo(vp, dirtyRect.fLeft, dirtyRect.fTop,
- dirtyRect.width(), dirtyRect.height(), target->origin());
if (GrGLCaps::kES_Apple_MSFBOType == this->glCaps().msFBOType()) {
// Apple's extension uses the scissor as the blit bounds.
GrScissorState scissorState;
- scissorState.fEnabled = true;
- scissorState.fRect = dirtyRect;
- this->flushScissor(scissorState, rt->getViewport(), rt->origin());
+ scissorState.set(dirtyRect);
+ this->flushScissor(scissorState, vp, rt->origin());
GL_CALL(ResolveMultisampleFramebuffer());
} else {
+ GrGLIRect r;
+ r.setRelativeTo(vp, dirtyRect.fLeft, dirtyRect.fTop,
+ dirtyRect.width(), dirtyRect.height(), target->origin());
+
int right = r.fLeft + r.fWidth;
int top = r.fBottom + r.fHeight;