On 02/11/2014 05:11 PM, Eric Anholt wrote: > From the GL_ARB_fbo spec: > > If the source and destination buffers are identical, and the > source and destination rectangles overlap, the result of the blit > operation is undefined. > > As far as I know, that's the only thing that would have been of concern > for this.
That's the only thing I can think of. It was Brian's code, so maybe he remembers something? OpenGL ES 3.0 says, "If the source and destination buffers are identical, an INVALID_OPERATION error is generated." That should be handled elsewhere, though. > --- > src/mesa/drivers/common/meta.c | 20 -------------------- > 1 file changed, 20 deletions(-) > > diff --git a/src/mesa/drivers/common/meta.c b/src/mesa/drivers/common/meta.c > index 3c4f706..03811bd 100644 > --- a/src/mesa/drivers/common/meta.c > +++ b/src/mesa/drivers/common/meta.c > @@ -1684,7 +1684,6 @@ setup_glsl_blit_framebuffer(struct gl_context *ctx, > /** > * Try to do a glBlitFramebuffer using no-copy texturing. > * We can do this when the src renderbuffer is actually a texture. > - * But if the src buffer == dst buffer we cannot do this. > * > * \return new buffer mask indicating the buffers left to blit using the > * normal path. > @@ -1697,9 +1696,7 @@ blitframebuffer_texture(struct gl_context *ctx, > GLint flipY, GLboolean glsl_version) > { > if (mask & GL_COLOR_BUFFER_BIT) { > - const struct gl_framebuffer *drawFb = ctx->DrawBuffer; > const struct gl_framebuffer *readFb = ctx->ReadBuffer; > - const struct gl_renderbuffer_attachment *drawAtt; > const struct gl_renderbuffer_attachment *readAtt = > &readFb->Attachment[readFb->_ColorReadBufferIndex]; > > @@ -1717,23 +1714,6 @@ blitframebuffer_texture(struct gl_context *ctx, > GLuint sampler, samplerSave = > ctx->Texture.Unit[ctx->Texture.CurrentUnit].Sampler ? > ctx->Texture.Unit[ctx->Texture.CurrentUnit].Sampler->Name : 0; > - int i; > - > - /* Iterate through all draw buffers */ > - for (i = 0; i < ctx->DrawBuffer->_NumColorDrawBuffers; i++) { > - int idx = ctx->DrawBuffer->_ColorDrawBufferIndexes[i]; > - if (idx == -1) > - continue; > - drawAtt = &drawFb->Attachment[idx]; > - > - if (drawAtt->Texture == readAtt->Texture) { > - /* Can't use same texture as both the source and dest. We > need > - * to handle overlapping blits and besides, some hw may not > - * support this. > - */ > - return mask; > - } > - } > > if (target != GL_TEXTURE_2D && target != GL_TEXTURE_RECTANGLE_ARB) { > /* Can't handle other texture types at this time */ > _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev