st/mesa: fix fallout from xfb changes.
[mesa.git] / src / mesa / state_tracker / st_atom_framebuffer.c
index eb5f783cecbd32733d34a03074311fc60a6fbdd9..ae883a2535e32ad98931632d4e5b406de1cf67f7 100644 (file)
@@ -113,6 +113,12 @@ update_framebuffer_state( struct st_context *st )
       pipe_surface_reference(&framebuffer->cbufs[i], NULL);
    }
 
+   /* Remove trailing GL_NONE draw buffers. */
+   while (framebuffer->nr_cbufs &&
+          !framebuffer->cbufs[framebuffer->nr_cbufs-1]) {
+      framebuffer->nr_cbufs--;
+   }
+
    /*
     * Depth/Stencil renderbuffer/surface.
     */
@@ -128,7 +134,10 @@ update_framebuffer_state( struct st_context *st )
    else {
       strb = st_renderbuffer(fb->Attachment[BUFFER_STENCIL].Renderbuffer);
       if (strb) {
-         assert(strb->surface);
+         if (strb->is_rtt) {
+            /* rendering to a GL texture, may have to update surface */
+            st_update_renderbuffer_surface(st, strb);
+         }
          pipe_surface_reference(&framebuffer->zsbuf, strb->surface);
          update_framebuffer_size(framebuffer, strb->surface);
       }