Simplify radeonSetCliprects(). Remove the 'mode' parameter.
authorBrian Paul <brian.paul@tungstengraphics.com>
Sun, 4 Sep 2005 22:20:07 +0000 (22:20 +0000)
committerBrian Paul <brian.paul@tungstengraphics.com>
Sun, 4 Sep 2005 22:20:07 +0000 (22:20 +0000)
src/mesa/drivers/dri/radeon/radeon_lock.c
src/mesa/drivers/dri/radeon/radeon_state.c
src/mesa/drivers/dri/radeon/radeon_state.h

index 144e11d491049c1026def729ef18b92e31917771..591595e63212d209c695c32ebde19d707d81b080 100644 (file)
@@ -89,10 +89,7 @@ void radeonGetLock( radeonContextPtr rmesa, GLuint flags )
 
    if ( rmesa->lastStamp != dPriv->lastStamp ) {
       radeonUpdatePageFlipping( rmesa );
-      if (rmesa->glCtx->DrawBuffer->_ColorDrawBufferMask[0] == BUFFER_BIT_BACK_LEFT)
-         radeonSetCliprects( rmesa, GL_BACK_LEFT );
-      else
-         radeonSetCliprects( rmesa, GL_FRONT_LEFT );
+      radeonSetCliprects( rmesa );
       radeonUpdateViewportOffset( rmesa->glCtx );
       rmesa->lastStamp = dPriv->lastStamp;
    }
index e0e55461a2c96188ed8182c5534d628e59422f63..0503fff68cda640206185299b8560059baedf4fe 100644 (file)
@@ -1468,6 +1468,11 @@ static void radeonClearStencil( GLcontext *ctx, GLint s )
 #define SUBPIXEL_X 0.125
 #define SUBPIXEL_Y 0.125
 
+
+/**
+ * Called when window size or position changes or viewport or depth range
+ * state is changed.  We update the hardware viewport state here.
+ */
 void radeonUpdateWindow( GLcontext *ctx )
 {
    radeonContextPtr rmesa = RADEON_CONTEXT(ctx);
@@ -1617,16 +1622,15 @@ static void radeonLogicOpCode( GLcontext *ctx, GLenum opcode )
 }
 
 
-void radeonSetCliprects( radeonContextPtr rmesa, GLenum mode )
+/**
+ * Set up the cliprects for either front or back-buffer drawing.
+ */
+void radeonSetCliprects( radeonContextPtr rmesa )
 {
    __DRIdrawablePrivate *dPriv = rmesa->dri.drawable;
 
-   switch ( mode ) {
-   case GL_FRONT_LEFT:
-      rmesa->numClipRects = dPriv->numClipRects;
-      rmesa->pClipRects = dPriv->pClipRects;
-      break;
-   case GL_BACK_LEFT:
+   if (rmesa->glCtx->DrawBuffer->_ColorDrawBufferMask[0]
+       == BUFFER_BIT_BACK_LEFT) {
       /* Can't ignore 2d windows if we are page flipping.
        */
       if ( dPriv->numBackClipRects == 0 || rmesa->doPageFlip ) {
@@ -1637,10 +1641,11 @@ void radeonSetCliprects( radeonContextPtr rmesa, GLenum mode )
         rmesa->numClipRects = dPriv->numBackClipRects;
         rmesa->pClipRects = dPriv->pBackClipRects;
       }
-      break;
-   default:
-      fprintf(stderr, "bad mode in radeonSetCliprects\n");
-      return;
+   }
+   else {
+      /* front buffer (or none, or multiple buffers */
+      rmesa->numClipRects = dPriv->numClipRects;
+      rmesa->pClipRects = dPriv->pClipRects;
    }
 
    if (rmesa->state.scissor.enabled)
@@ -1667,19 +1672,17 @@ static void radeonDrawBuffer( GLcontext *ctx, GLenum mode )
     */
    switch ( ctx->DrawBuffer->_ColorDrawBufferMask[0] ) {
    case BUFFER_BIT_FRONT_LEFT:
-      FALLBACK( rmesa, RADEON_FALLBACK_DRAW_BUFFER, GL_FALSE );
-      radeonSetCliprects( rmesa, GL_FRONT_LEFT );
-      break;
    case BUFFER_BIT_BACK_LEFT:
       FALLBACK( rmesa, RADEON_FALLBACK_DRAW_BUFFER, GL_FALSE );
-      radeonSetCliprects( rmesa, GL_BACK_LEFT );
       break;
    default:
-      /* GL_NONE or GL_FRONT_AND_BACK or stereo left&right, etc */
+      /* 0 (GL_NONE) buffers or multiple color drawing buffers */
       FALLBACK( rmesa, RADEON_FALLBACK_DRAW_BUFFER, GL_TRUE );
       return;
    }
 
+   radeonSetCliprects( rmesa );
+
    /* We'll set the drawing engine's offset/pitch parameters later
     * when we update other state.
     */
index e9074f51e7dd935d85e498b01a95473b5c54a581..c9f5c05cf4db7e1d91068db0f41f7ee1b928f3fb 100644 (file)
@@ -45,7 +45,7 @@ extern void radeonInitStateFuncs( GLcontext *ctx );
 
 extern void radeonUpdateMaterial( GLcontext *ctx );
 
-extern void radeonSetCliprects( radeonContextPtr rmesa, GLenum mode );
+extern void radeonSetCliprects( radeonContextPtr rmesa );
 extern void radeonRecalcScissorRects( radeonContextPtr rmesa );
 extern void radeonUpdateViewportOffset( GLcontext *ctx );
 extern void radeonUpdateWindow( GLcontext *ctx );