On 02/10/2012 03:53 PM, Eric Anholt wrote:
If we're only starting for new draw buffers, why would we end for old
read buffers along with draw buffers?
---
  src/mesa/main/fbobject.c |    7 ++-----
  1 files changed, 2 insertions(+), 5 deletions(-)

diff --git a/src/mesa/main/fbobject.c b/src/mesa/main/fbobject.c
index 987d687..64c3393 100644
--- a/src/mesa/main/fbobject.c
+++ b/src/mesa/main/fbobject.c
@@ -1758,11 +1758,8 @@ _mesa_BindFramebufferEXT(GLenum target, GLuint 
framebuffer)
     if (bindDrawBuf) {
        FLUSH_VERTICES(ctx, _NEW_BUFFERS);

-      /* check if old read/draw buffers were render-to-texture */
-      if (!bindReadBuf)
-         check_end_texture_render(ctx, oldReadFb);
-
-      if (oldDrawFb != oldReadFb)
+      /* check if old framebuffer had any texture attachments */
+      if (oldDrawFb)
           check_end_texture_render(ctx, oldDrawFb);

        /* check if newly bound framebuffer has any texture attachments */

This looks OK to me, but it's one of those things that deserves a lot of testing.

FWIW, I've never been totally happy with the ctx->Driver.RenderTexture() and FinishRenderTexture() hooks. It's been hard to concisely define when RTT starts and stops.

Maybe we should just have a driver hook to create a renderbuffer that wraps a texture slice when glFrameBufferTexture() is called. Then, leave it up to the driver to figure out the rest at draw-validation time.

-Brian
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to