From 5dbadd418c118731f12ec4ce61d899ec5a180b25 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20Hellstr=C3=B6m?= Date: Wed, 13 Sep 2006 15:10:09 +0000 Subject: [PATCH] Fix a FBO render offset bug. The current code failed if the dri drawable was updated before the call to intelFlush(), and typically rendered into an FBO using the back buffer cliprects. --- src/mesa/drivers/dri/i915/intel_fbo.c | 9 --------- src/mesa/main/fbobject.c | 4 +++- 2 files changed, 3 insertions(+), 10 deletions(-) diff --git a/src/mesa/drivers/dri/i915/intel_fbo.c b/src/mesa/drivers/dri/i915/intel_fbo.c index 0f77f9578b0..840006e5bc2 100644 --- a/src/mesa/drivers/dri/i915/intel_fbo.c +++ b/src/mesa/drivers/dri/i915/intel_fbo.c @@ -425,15 +425,6 @@ static void intel_bind_framebuffer(GLcontext * ctx, GLenum target, struct gl_framebuffer *fb) { - /* - _mesa_debug(ctx, "%s %d\n", __FUNCTION__, fb->Name); - */ - /* XXX FBO: putting this flush here fixes a rendering offset bug. - * Not sure why this is needed when _mesa_BindFrameBuffer does - * a FLUSH_VERTICES(). - */ - intelFlush(ctx); - if (target == GL_FRAMEBUFFER_EXT || target == GL_DRAW_FRAMEBUFFER_EXT) { intel_draw_buffer(ctx, fb); /* Integer depth range depends on depth buffer bits */ diff --git a/src/mesa/main/fbobject.c b/src/mesa/main/fbobject.c index b6a59336cb8..19cc410e6d3 100644 --- a/src/mesa/main/fbobject.c +++ b/src/mesa/main/fbobject.c @@ -972,7 +972,9 @@ _mesa_BindFramebufferEXT(GLenum target, GLuint framebuffer) } FLUSH_VERTICES(ctx, _NEW_BUFFERS); - + if (ctx->Driver.Flush) { + ctx->Driver.Flush(ctx); + } if (framebuffer) { /* Binding a user-created framebuffer object */ newFb = _mesa_lookup_framebuffer(ctx, framebuffer);