Instead of calling _mesa_ResizeBuffersMESA() in the Viewport function,
authorBrian Paul <brian.paul@tungstengraphics.com>
Wed, 14 Sep 2005 00:36:27 +0000 (00:36 +0000)
committerBrian Paul <brian.paul@tungstengraphics.com>
Wed, 14 Sep 2005 00:36:27 +0000 (00:36 +0000)
call driUpdateFramebufferSize() when window size/position changes.

22 files changed:
src/mesa/drivers/dri/fb/fb_dri.c
src/mesa/drivers/dri/fb/fb_egl.c
src/mesa/drivers/dri/ffb/ffb_state.c
src/mesa/drivers/dri/ffb/ffb_xmesa.c
src/mesa/drivers/dri/gamma/gamma_lock.c
src/mesa/drivers/dri/gamma/gamma_state.c
src/mesa/drivers/dri/i810/i810context.c
src/mesa/drivers/dri/i810/i810state.c
src/mesa/drivers/dri/i830/i830_context.c
src/mesa/drivers/dri/i830/i830_state.c
src/mesa/drivers/dri/mga/mga_xmesa.c
src/mesa/drivers/dri/mga/mgastate.c
src/mesa/drivers/dri/r128/r128_lock.c
src/mesa/drivers/dri/r128/r128_state.c
src/mesa/drivers/dri/savage/savage_xmesa.c
src/mesa/drivers/dri/savage/savagestate.c
src/mesa/drivers/dri/sis/sis_lock.c
src/mesa/drivers/dri/sis/sis_state.c
src/mesa/drivers/dri/tdfx/tdfx_lock.c
src/mesa/drivers/dri/tdfx/tdfx_state.c
src/mesa/drivers/dri/unichrome/via_context.c
src/mesa/drivers/dri/unichrome/via_state.c

index c1fab2d586772b6e38c4925e9ec6b78bf68bf872..ee2509652617c7fcfab852cbd8ce1e9d16647bdc 100644 (file)
@@ -41,7 +41,7 @@
  *      that may not be valid everywhere.
  */
 
-#include "driver.h"
+/*#include "driver.h"*/
 #include "drm.h"
 #include "utils.h"
 #include "drirenderbuffer.h"
@@ -113,10 +113,22 @@ get_buffer_size( GLframebuffer *buffer, GLuint *width, GLuint *height )
 }
 
 
+static void
+updateFramebufferSize(GLcontext *ctx)
+{
+   fbContextPtr fbmesa = FB_CONTEXT(ctx);
+   struct gl_framebuffer *fb = ctx->WinSysDrawBuffer;
+   if (fbmesa->dri.drawable->w != fb->Width ||
+       fbmesa->dri.drawable->h != fb->Height) {
+      driUpdateFramebufferSize(ctx, fbmesa->dri.drawable);
+   }
+}
+
 static void
 viewport(GLcontext *ctx, GLint x, GLint y, GLsizei w, GLsizei h)
 {
-   _mesa_ResizeBuffersMESA();
+   /* XXX this should be called after we acquire the DRI lock, not here */
+   updateFramebufferSize(ctx);
 }
 
 
index 94ff9cbb6225c17e2215d96b52c4ac90129c71a5..05148b445ccaaa265e53911529d8d62702ce5e4e 100644 (file)
@@ -398,10 +398,22 @@ get_buffer_size( GLframebuffer *buffer, GLuint *width, GLuint *height )
 }
 
 
+static void
+updateFramebufferSize(GLcontext *ctx)
+{
+   fbContextPtr fbmesa = FB_CONTEXT(ctx);
+   struct gl_framebuffer *fb = ctx->WinSysDrawBuffer;
+   if (fbmesa->dri.drawable->w != fb->Width ||
+       fbmesa->dri.drawable->h != fb->Height) {
+      driUpdateFramebufferSize(ctx, fbmesa->dri.drawable);
+   }
+}
+
 static void
 viewport(GLcontext *ctx, GLint x, GLint y, GLsizei w, GLsizei h)
 {
-   _mesa_ResizeBuffersMESA();
+   /* XXX this should be called after we acquire the DRI lock, not here */
+   updateFramebufferSize(ctx);
 }
 
 
index 85c2fb5e8bf7778605b4f81b39542a640251114a..b81d94de2529174166f199acbb44ff97e1ac0921 100644 (file)
@@ -26,7 +26,6 @@
  */
 
 #include "mtypes.h"
-#include "buffers.h"
 #include "colormac.h"
 #include "mm.h"
 #include "ffb_dd.h"
@@ -450,8 +449,6 @@ void ffbCalcViewport(GLcontext *ctx)
 static void ffbDDViewport(GLcontext *ctx, GLint x, GLint y,
                          GLsizei width, GLsizei height)
 {
-       /* update size of Mesa/software ancillary buffers */
-       _mesa_ResizeBuffersMESA();
        ffbCalcViewport(ctx);
 }
 
index baf4885a3be31ccb8ac1d11db80636caf7e80f88..ab2a6688bab069c8e61e117ef8917f23869378d0 100644 (file)
@@ -59,6 +59,8 @@
 
 #include "drm_sarea.h"
 
+#include "drirenderbuffer.h"
+
 static GLboolean
 ffbInitDriver(__DRIscreenPrivate *sPriv)
 {
@@ -595,9 +597,11 @@ void ffbXMesaUpdateState(ffbContextPtr fmesa)
                GLcontext *ctx = fmesa->glCtx;
 
                ffbCalcViewport(ctx);
-               if (ctx->Polygon.StippleFlag)
+               driUpdateFramebufferSize(ctx, dPriv);
+               if (ctx->Polygon.StippleFlag) {
                        ffbXformAreaPattern(fmesa,
                                            (const GLubyte *)ctx->PolygonStipple);
+               }
        }
 }
 
index 4c0970f0908df89d7a2e0159c39d47afd1d2543f..2ab387fa27d3ebbfcd95f4697324d563ff4c4f10 100644 (file)
@@ -2,6 +2,7 @@
 
 #include "gamma_context.h"
 #include "gamma_lock.h"
+#include "drirenderbuffer.h"
 
 #ifdef DEBUG_LOCKING
 char *prevLockFile = NULL;
@@ -35,6 +36,7 @@ void gammaGetLock( gammaContextPtr gmesa, GLuint flags )
    DRI_VALIDATE_DRAWABLE_INFO( sPriv, dPriv );
 
    if ( gmesa->lastStamp != dPriv->lastStamp ) {
+      driUpdateFramebufferSize(gmesa->glCtx, dPriv);
       gmesa->lastStamp = dPriv->lastStamp;
       gmesa->new_state |= GAMMA_NEW_WINDOW | GAMMA_NEW_CLIP;
    }
index 3edf009c787743c5b3f55060425cecedeaea56f9..026ff5efbff8e10d17612d0e73073da8fb5e538d 100644 (file)
@@ -1099,8 +1099,6 @@ void gammaUpdateWindow( GLcontext *ctx )
 static void gammaDDViewport( GLcontext *ctx, GLint x, GLint y,
                            GLsizei width, GLsizei height )
 {
-   /* update size of Mesa/software ancillary buffers */
-   _mesa_ResizeBuffersMESA();
    gammaUpdateWindow( ctx );
 }
 
index d3445706a48507919349744949884c633c7ecb2c..89546b6ae28dc3e9a251e1b44eb4c4e1065aef32 100644 (file)
@@ -526,6 +526,7 @@ void i810GetLock( i810ContextPtr imesa, GLuint flags )
     * more broken than usual.
     */
    if (sarea->ctxOwner != me) {
+      driUpdateFramebufferSize(imesa->glCtx, dPriv);
       imesa->upload_cliprects = GL_TRUE;
       imesa->dirty = I810_UPLOAD_CTX|I810_UPLOAD_BUFFERS;
       if (imesa->CurrentTexObj[0]) imesa->dirty |= I810_UPLOAD_TEX0;
index 4a811a0d032f05caf61e8a91cee118bd18b3a437..a79c3a3e4dfed0f3d8a406de6c58c406bb05b7d2 100644 (file)
@@ -3,10 +3,8 @@
 #include <stdio.h>
 
 #include "glheader.h"
-#include "buffers.h"
 #include "context.h"
 #include "macros.h"
-#include "enums.h"
 #include "dd.h"
 #include "colormac.h"
 
@@ -690,8 +688,6 @@ static void i810Viewport( GLcontext *ctx,
                          GLint x, GLint y,
                          GLsizei width, GLsizei height )
 {
-   /* update size of Mesa/software ancillary buffers */
-   _mesa_ResizeBuffersMESA();
    i810CalcViewport( ctx );
 }
 
index 45fcbd2e3b6eb58c1270aaed31804d6ea4fb5a79..45c3ca57f47bacc80a966f37c69931e472177171 100644 (file)
@@ -63,7 +63,7 @@
 #include "i830_tris.h"
 #include "i830_ioctl.h"
 
-
+#include "drirenderbuffer.h"
 #include "utils.h"
 
 #define need_GL_ARB_multisample
@@ -573,6 +573,7 @@ void i830GetLock( i830ContextPtr imesa, GLuint flags )
     */
 
    if (sarea->ctxOwner != me) {
+      driUpdateFramebufferSize(imesa->glCtx, dPriv);
       imesa->upload_cliprects = GL_TRUE;
       imesa->dirty |= (I830_UPLOAD_CTX |
                       I830_UPLOAD_BUFFERS | 
index 13e25596629fa0bb6f3bd10b1eaed471de39571d..55211f20a0951e426c05c3820d20ae3fcad8db82 100644 (file)
@@ -36,7 +36,6 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.
  */
 
 #include "glheader.h"
-#include "buffers.h"
 #include "context.h"
 #include "macros.h"
 #include "enums.h"
@@ -1227,8 +1226,6 @@ static void i830Viewport( GLcontext *ctx,
                          GLint x, GLint y,
                          GLsizei width, GLsizei height )
 {
-   /* update size of Mesa/software ancillary buffers */
-   _mesa_ResizeBuffersMESA();
    i830CalcViewport( ctx );
 }
 
index 34f17a2f647a72baebfc5666fad00912c712b442..cd524adc44f817cff07f5ec4c38a58e5a8ba26bd 100644 (file)
@@ -66,6 +66,7 @@
 #include "vblank.h"
 
 #include "extensions.h"
+#include "drirenderbuffer.h"
 
 #include "GL/internal/dri_interface.h"
 
@@ -911,6 +912,7 @@ void mgaGetLock( mgaContextPtr mmesa, GLuint flags )
       mmesa->SetupNewInputs |= VERT_BIT_POS;
       mmesa->dirty_cliprects = (MGA_FRONT|MGA_BACK);
       mgaUpdateRects( mmesa, (MGA_FRONT|MGA_BACK) );
+      driUpdateFramebufferSize(mmesa->glCtx, dPriv);
    }
 
    mmesa->dirty |= MGA_UPLOAD_CONTEXT | MGA_UPLOAD_CLIPRECTS;
index 139a4e2abd22e049c1d5da966e0effdebae1bc30..de3654bacb3f0e0ba8dec64e3dae84b43098d067 100644 (file)
@@ -28,7 +28,6 @@
 
 
 #include "mtypes.h"
-#include "buffers.h"
 #include "colormac.h"
 #include "dd.h"
 
@@ -699,8 +698,6 @@ static void mgaViewport( GLcontext *ctx,
                          GLint x, GLint y, 
                          GLsizei width, GLsizei height )
 {
-   /* update size of Mesa/software ancillary buffers */
-   _mesa_ResizeBuffersMESA();
    mgaCalcViewport( ctx );
 }
 
index d7c35afff37122f15f4a9679899bd144ca670ce9..ef67bc6a43ae01d12b45b3d9afa91f187ca7e539 100644 (file)
@@ -86,6 +86,7 @@ void r128GetLock( r128ContextPtr rmesa, GLuint flags )
 
    if ( rmesa->lastStamp != dPriv->lastStamp ) {
       r128UpdatePageFlipping( rmesa );
+      driUpdateFramebufferSize(rmesa->glCtx, dPriv);
       rmesa->lastStamp = dPriv->lastStamp;
       rmesa->new_state |= R128_NEW_CLIP;
       rmesa->tnl_state = ~0;
index 11f0d309e4a6442c2b39e606678197fc3e7de72e..7da3a081904ca7bdf3369bc32a7ffef07ac4730b 100644 (file)
@@ -41,7 +41,6 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.
 #include "r128_tex.h"
 
 #include "context.h"
-#include "buffers.h"
 #include "enums.h"
 #include "colormac.h"
 #include "swrast/swrast.h"
@@ -673,8 +672,6 @@ static void r128Viewport( GLcontext *ctx,
                          GLint x, GLint y,
                          GLsizei width, GLsizei height )
 {
-   /* update size of Mesa/software ancillary buffers */
-   _mesa_ResizeBuffersMESA();
    r128CalcViewport( ctx );
 }
 
@@ -726,8 +723,6 @@ static void r128DDDrawBuffer( GLcontext *ctx, GLenum mode )
     */
    switch ( ctx->DrawBuffer->_ColorDrawBufferMask[0] ) {
    case BUFFER_BIT_FRONT_LEFT:
-      FALLBACK( rmesa, R128_FALLBACK_DRAW_BUFFER, GL_FALSE );
-      break;
    case BUFFER_BIT_BACK_LEFT:
       FALLBACK( rmesa, R128_FALLBACK_DRAW_BUFFER, GL_FALSE );
       break;
index 2f93ae245000e231c568c232cf806a92fb51d3e8..c3c0a8c97162b440f62dd1324dbf791451a60d51 100644 (file)
@@ -56,6 +56,7 @@
 
 #include "savage_dri.h"
 
+#include "drirenderbuffer.h"
 #include "texmem.h"
 
 #define need_GL_ARB_multisample
@@ -907,11 +908,10 @@ void savageGetLock( savageContextPtr imesa, GLuint flags )
       DRI_AGE_TEXTURES( imesa->textureHeaps[heap] );
    }
 
-   if (dPriv->lastStamp != stamp)
+   if (dPriv->lastStamp != stamp) {
+      driUpdateFramebufferSize(imesa->glCtx, dPriv);
       savageXMesaWindowMoved( imesa );
-
-  
-   
+   }
 }
 
 
index c3c04d587eb9e37b365100e911ab01d7812edc9f..1acabcb5f4732c8131d0ae80d7c0842371446d53 100644 (file)
@@ -26,7 +26,6 @@
 #include <stdio.h>
 
 #include "mtypes.h"
-#include "buffers.h"
 #include "enums.h"
 #include "macros.h"
 #include "dd.h"
@@ -718,8 +717,6 @@ static void savageViewport( GLcontext *ctx,
                            GLint x, GLint y, 
                            GLsizei width, GLsizei height )
 {
-   /* update size of Mesa/software ancillary buffers */
-   _mesa_ResizeBuffersMESA();
    savageCalcViewport( ctx );
 }
 
index f598e52d921ad2d587df18ac8962436f433c897d..386f99ca27d45784557209369453d2ab0fa37620 100644 (file)
@@ -34,6 +34,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #include "sis_lock.h"
 #include "sis_dd.h"
 #include "sis_state.h"
+#include "drirenderbuffer.h"
 
 /* Update the hardware state.  This is called if another context has
  * grabbed the hardware lock, which includes the X server.  This
@@ -66,6 +67,7 @@ sisGetLock( sisContextPtr smesa, GLuint flags )
       sisUpdateBufferSize( smesa );
       sisUpdateClipping( smesa->glCtx );
       sisDDDrawBuffer( smesa->glCtx, smesa->glCtx->Color.DrawBuffer[0] );
+      driUpdateFramebufferSize(smesa->glCtx, dPriv);
       smesa->lastStamp = dPriv->lastStamp;
    }
 
index 50c45b63ed562b90d6b2e2bcc092b2e8b53657d2..8349c42d297ab63a4bebda1889aa503ee31cda8b 100644 (file)
@@ -39,7 +39,6 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.
 #include "sis_tex.h"
 
 #include "context.h"
-#include "buffers.h"
 #include "enums.h"
 #include "colormac.h"
 #include "swrast/swrast.h"
@@ -437,8 +436,6 @@ static void sisDDViewport( GLcontext *ctx,
                           GLint x, GLint y,
                           GLsizei width, GLsizei height )
 {
-   /* update size of Mesa/software ancillary buffers */
-   _mesa_ResizeBuffersMESA();
    sisCalcViewport( ctx );
 }
 
index 6bbfb8d3a2cb3b37768fdeeff576d87a8bfe2e1d..ae3ba1a8321ca86c1299b2e0f2cb3ca26c41ee05 100644 (file)
@@ -41,6 +41,8 @@
 #include "tdfx_texman.h"
 #include "tdfx_tris.h"
 
+#include "drirenderbuffer.h"
+
 
 void tdfxGetLock( tdfxContextPtr fxMesa )
 {
@@ -84,6 +86,7 @@ void tdfxGetLock( tdfxContextPtr fxMesa )
     if ( *dPriv->pStamp != stamp || saPriv->ctxOwner != fxMesa->hHWContext ) {
        tdfxUpdateClipping(fxMesa->glCtx);
        tdfxUploadClipping(fxMesa);
+       driUpdateFramebufferSize(fxMesa->glCtx, dPriv);
     }
 
     DEBUG_LOCK();
index 28d2f13ea8fbacd541f0791d3e06a4f776901cb9..1869de4737460e4fae08fe5968104e0184a130f4 100644 (file)
@@ -40,7 +40,6 @@
  */
 
 #include "mtypes.h"
-#include "buffers.h"
 #include "colormac.h"
 #include "texformat.h"
 #include "texstore.h"
@@ -906,8 +905,6 @@ static void tdfxDDViewport( GLcontext *ctx, GLint x, GLint y,
                            GLsizei w, GLsizei h )
 {
    tdfxContextPtr fxMesa = TDFX_CONTEXT(ctx);
-   /* update size of Mesa/software ancillary buffers */
-   _mesa_ResizeBuffersMESA();
    FLUSH_BATCH( fxMesa );
    fxMesa->new_state |= TDFX_NEW_VIEWPORT;
 }
index 64f4e286d725131344067a5ddd5b7c7e2dd8e8e7..4fae01924740b64a2325e84c6481254bf812d2df 100644 (file)
@@ -60,6 +60,7 @@
 
 #include <stdio.h>
 #include "macros.h"
+#include "drirenderbuffer.h"
 
 #define need_GL_ARB_multisample
 #define need_GL_ARB_point_parameters
@@ -852,6 +853,7 @@ void viaGetLock(struct via_context *vmesa, GLuint flags)
 
     if (vmesa->lastStamp != dPriv->lastStamp) {
        viaXMesaWindowMoved(vmesa);
+       driUpdateFramebufferSize(vmesa->glCtx, dPriv);
        vmesa->newEmitState = ~0;
        vmesa->lastStamp = dPriv->lastStamp;
     }
index 324c72b46ab4fba8b3f72d3c490e8038d08ba889..6a2a99df3bcfd5b8549c85f436e110d360a3a0bc 100644 (file)
@@ -25,7 +25,6 @@
 #include <stdio.h>
 
 #include "glheader.h"
-#include "buffers.h"
 #include "context.h"
 #include "macros.h"
 #include "colormac.h"
@@ -738,8 +737,6 @@ static void viaViewport(GLcontext *ctx,
                         GLint x, GLint y,
                         GLsizei width, GLsizei height)
 {
-   /* update size of Mesa/software ancillary buffers */
-   _mesa_ResizeBuffersMESA();
     viaCalcViewport(ctx);
 }