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