summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/mesa/drivers/dri/unichrome/via_context.c5
-rw-r--r--src/mesa/drivers/dri/unichrome/via_ioctl.c4
-rw-r--r--src/mesa/drivers/dri/unichrome/via_state.c6
3 files changed, 11 insertions, 4 deletions
diff --git a/src/mesa/drivers/dri/unichrome/via_context.c b/src/mesa/drivers/dri/unichrome/via_context.c
index e48df63d0b9..0c52374d603 100644
--- a/src/mesa/drivers/dri/unichrome/via_context.c
+++ b/src/mesa/drivers/dri/unichrome/via_context.c
@@ -676,6 +676,11 @@ viaMakeCurrent(__DRIcontextPrivate *driContextPriv,
_mesa_update_state(vmesa->glCtx);
viaValidateState(vmesa->glCtx);
+ ctx->Driver.Scissor(vmesa->glCtx,
+ vmesa->glCtx->Scissor.X,
+ vmesa->glCtx->Scissor.Y,
+ vmesa->glCtx->Scissor.Width,
+ vmesa->glCtx->Scissor.Height);
}
else {
_mesa_make_current(0,0);
diff --git a/src/mesa/drivers/dri/unichrome/via_ioctl.c b/src/mesa/drivers/dri/unichrome/via_ioctl.c
index efb7cf6b6cf..c7b616f4057 100644
--- a/src/mesa/drivers/dri/unichrome/via_ioctl.c
+++ b/src/mesa/drivers/dri/unichrome/via_ioctl.c
@@ -665,10 +665,10 @@ void viaFlushDmaLocked(viaContextPtr vmesa, GLuint flags)
b.y1 = pbox[i].y1 - vmesa->drawY;
b.y2 = pbox[i].y2 - vmesa->drawY;
- if (vmesa->glCtx->Scissor.Enabled &&
+ if (vmesa->scissor &&
!intersect_rect(&b, &b, &vmesa->scissorRect))
continue;
-
+
b.x1 += vmesa->drawXoff;
b.x2 += vmesa->drawXoff;
diff --git a/src/mesa/drivers/dri/unichrome/via_state.c b/src/mesa/drivers/dri/unichrome/via_state.c
index 49782c78aa6..fffea017895 100644
--- a/src/mesa/drivers/dri/unichrome/via_state.c
+++ b/src/mesa/drivers/dri/unichrome/via_state.c
@@ -612,14 +612,15 @@ static void viaScissor(GLcontext *ctx, GLint x, GLint y,
if (VIA_DEBUG)
fprintf(stderr, "%s %d,%d %dx%d, drawH %d\n", __FUNCTION__, x,y,w,h, vmesa->driDrawable->h);
- if (ctx->Scissor.Enabled) {
+ if (vmesa->scissor) {
VIA_FLUSH_DMA(vmesa); /* don't pipeline cliprect changes */
}
vmesa->scissorRect.x1 = x;
- vmesa->scissorRect.y1 = vmesa->driDrawable->h - (y + h);
+ vmesa->scissorRect.y1 = vmesa->driDrawable->h - y - h;
vmesa->scissorRect.x2 = x + w;
vmesa->scissorRect.y2 = vmesa->driDrawable->h - y;
+
if (VIA_DEBUG) fprintf(stderr, "%s out\n", __FUNCTION__);
}
@@ -630,6 +631,7 @@ static void viaEnable(GLcontext *ctx, GLenum cap, GLboolean state)
switch (cap) {
case GL_SCISSOR_TEST:
VIA_FLUSH_DMA(vmesa);
+ vmesa->scissor = state;
break;
default:
break;