gallium: fix zero-sized viewport bug
authorBrian <brian@poulsbo.localnet.net>
Tue, 26 Feb 2008 21:26:40 +0000 (14:26 -0700)
committerBrian <brian@poulsbo.localnet.net>
Tue, 26 Feb 2008 21:32:57 +0000 (14:32 -0700)
If st_create_framebuffer() is called with width=0, height=0 and the program
never called glViewport, the viewport wasn't properly initalized.  This fixes
that.

src/mesa/state_tracker/st_framebuffer.c

index bca3fa5c3833a8ffa9d4f68623f26645e718a9a6..47d47daf2a1cd9d6de573e5c2579ff583e7ef435 100644 (file)
@@ -124,6 +124,17 @@ void st_resize_framebuffer( struct st_framebuffer *stfb,
    if (stfb->Base.Width != width || stfb->Base.Height != height) {
       GET_CURRENT_CONTEXT(ctx);
       if (ctx) {
+         if (stfb->InitWidth == 0 && stfb->InitHeight == 0) {
+            /* didn't have a valid size until now */
+            stfb->InitWidth = width;
+            stfb->InitHeight = height;
+            if (ctx->Viewport.Width <= 1) {
+               /* set context's initial viewport/scissor size */
+               _mesa_set_viewport(ctx, 0, 0, width, height);
+               _mesa_set_scissor(ctx, 0, 0, width, height);
+            }
+         }
+
          _mesa_resize_framebuffer(ctx, &stfb->Base, width, height);
 
          assert(stfb->Base.Width == width);