gallium: fix multi drawbuffer fb state
authorBrian <brian.paul@tungstengraphics.com>
Tue, 15 Apr 2008 02:57:15 +0000 (20:57 -0600)
committerBrian <brian.paul@tungstengraphics.com>
Tue, 15 Apr 2008 02:57:15 +0000 (20:57 -0600)
src/mesa/state_tracker/st_atom_framebuffer.c

index 8a95096ec9af78ffbf0c52e9ef9b009038793732..14eeb58cc1bb58d74ed018b9a8f0b2a9c96b4840 100644 (file)
@@ -48,7 +48,7 @@ update_framebuffer_state( struct st_context *st )
    struct pipe_framebuffer_state *framebuffer = &st->state.framebuffer;
    struct gl_framebuffer *fb = st->ctx->DrawBuffer;
    struct st_renderbuffer *strb;
-   GLuint i;
+   GLuint i, j;
 
    memset(framebuffer, 0, sizeof(*framebuffer));
 
@@ -58,11 +58,14 @@ update_framebuffer_state( struct st_context *st )
    /* Examine Mesa's ctx->DrawBuffer->_ColorDrawBuffers state
     * to determine which surfaces to draw to
     */
-   framebuffer->num_cbufs = fb->_NumColorDrawBuffers[0];
-   for (i = 0; i < framebuffer->num_cbufs; i++) {
-      strb = st_renderbuffer(fb->_ColorDrawBuffers[0][i]);
-      assert(strb->surface);
-      framebuffer->cbufs[i] = strb->surface;
+   framebuffer->num_cbufs = 0;
+   for (j = 0; j < MAX_DRAW_BUFFERS; j++) {
+      for (i = 0; i < fb->_NumColorDrawBuffers[j]; i++) {
+         strb = st_renderbuffer(fb->_ColorDrawBuffers[j][i]);
+         assert(strb->surface);
+         framebuffer->cbufs[framebuffer->num_cbufs] = strb->surface;
+         framebuffer->num_cbufs++;
+      }
    }
 
    strb = st_renderbuffer(fb->Attachment[BUFFER_DEPTH].Renderbuffer);