From: Brian Paul Date: Tue, 26 Jan 2010 20:23:25 +0000 (-0700) Subject: Merge branch 'mesa_7_7_branch' X-Git-Url: https://git.libre-soc.org/?p=mesa.git;a=commitdiff_plain;h=43867acb6afc7fad26cdc2f22b2a3bb6eeefb2da;hp=-c Merge branch 'mesa_7_7_branch' Merging was easier than cherry picking in this instance. --- 43867acb6afc7fad26cdc2f22b2a3bb6eeefb2da diff --combined src/mesa/main/fbobject.c index 0556f168501,0e83a4e87fa..de1b524c0b5 --- a/src/mesa/main/fbobject.c +++ b/src/mesa/main/fbobject.c @@@ -858,9 -858,6 +858,9 @@@ _mesa_GenRenderbuffersEXT(GLsizei n, GL * * \return one of GL_RGB, GL_RGBA, GL_STENCIL_INDEX, GL_DEPTH_COMPONENT * GL_DEPTH_STENCIL_EXT or zero if error. + * + * XXX in the future when we support red-only and red-green formats + * we'll also return GL_RED and GL_RG. */ GLenum _mesa_base_fbo_format(GLcontext *ctx, GLenum internalFormat) @@@ -1353,15 -1350,26 +1353,26 @@@ _mesa_DeleteFramebuffersEXT(GLsizei n, ASSERT(fb == &DummyFramebuffer || fb->Name == framebuffers[i]); /* check if deleting currently bound framebuffer object */ - if (fb == ctx->DrawBuffer) { - /* bind default */ - ASSERT(fb->RefCount >= 2); - _mesa_BindFramebufferEXT(GL_DRAW_FRAMEBUFFER_EXT, 0); + if (ctx->Extensions.EXT_framebuffer_blit) { + /* separate draw/read binding points */ + if (fb == ctx->DrawBuffer) { + /* bind default */ + ASSERT(fb->RefCount >= 2); + _mesa_BindFramebufferEXT(GL_DRAW_FRAMEBUFFER_EXT, 0); + } + if (fb == ctx->ReadBuffer) { + /* bind default */ + ASSERT(fb->RefCount >= 2); + _mesa_BindFramebufferEXT(GL_READ_FRAMEBUFFER_EXT, 0); + } } - if (fb == ctx->ReadBuffer) { - /* bind default */ - ASSERT(fb->RefCount >= 2); - _mesa_BindFramebufferEXT(GL_READ_FRAMEBUFFER_EXT, 0); + else { + /* only one binding point for read/draw buffers */ + if (fb == ctx->DrawBuffer || fb == ctx->ReadBuffer) { + /* bind default */ + ASSERT(fb->RefCount >= 2); + _mesa_BindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0); + } } /* remove from hash table immediately, to free the ID */