Mesa (master): radeon: Fix scissor rectangle calculation when rendering to FBO.

Michel Dänzer daenzer at kemper.freedesktop.org
Sat Jul 11 18:27:19 UTC 2009


Module: Mesa
Branch: master
Commit: 65059606e9a0039fc962869857c5f00a11d6b7cc
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=65059606e9a0039fc962869857c5f00a11d6b7cc

Author: Michel Dänzer <daenzer at vmware.com>
Date:   Sat Jul 11 20:25:09 2009 +0200

radeon: Fix scissor rectangle calculation when rendering to FBO.

fgl_glxgears -fbo runs, though the gears don't look right yet.

---

 src/mesa/drivers/dri/radeon/radeon_common.c |   11 ++++++++---
 1 files changed, 8 insertions(+), 3 deletions(-)

diff --git a/src/mesa/drivers/dri/radeon/radeon_common.c b/src/mesa/drivers/dri/radeon/radeon_common.c
index 4292273..e9559cc 100644
--- a/src/mesa/drivers/dri/radeon/radeon_common.c
+++ b/src/mesa/drivers/dri/radeon/radeon_common.c
@@ -221,7 +221,7 @@ void radeonUpdateScissor( GLcontext *ctx )
 {
 	radeonContextPtr rmesa = RADEON_CONTEXT(ctx);
 
-	if ( radeon_get_drawable(rmesa) ) {
+	if ( !ctx->DrawBuffer->Name ) {
 		__DRIdrawablePrivate *dPriv = radeon_get_drawable(rmesa);
 
 		int x = ctx->Scissor.X;
@@ -233,9 +233,14 @@ void radeonUpdateScissor( GLcontext *ctx )
 		rmesa->state.scissor.rect.y1 = y + dPriv->y;
 		rmesa->state.scissor.rect.x2 = w + dPriv->x + 1;
 		rmesa->state.scissor.rect.y2 = h + dPriv->y + 1;
-
-		radeonRecalcScissorRects( rmesa );
+	} else {
+		rmesa->state.scissor.rect.x1 = ctx->Scissor.X;
+		rmesa->state.scissor.rect.y1 = ctx->Scissor.Y;
+		rmesa->state.scissor.rect.x2 = ctx->Scissor.X + ctx->Scissor.Width;
+		rmesa->state.scissor.rect.y2 = ctx->Scissor.Y + ctx->Scissor.Height;
 	}
+
+	radeonRecalcScissorRects( rmesa );
 }
 
 /* =============================================================




More information about the mesa-commit mailing list