meta/copy_image: Stash off the scissor
authorJason Ekstrand <jason.ekstrand@intel.com>
Fri, 24 Jul 2015 00:26:56 +0000 (17:26 -0700)
committerJason Ekstrand <jason.ekstrand@intel.com>
Wed, 29 Jul 2015 00:50:10 +0000 (17:50 -0700)
The meta CopyImageSubData path uses BlitFramebuffers to do the actual copy.
The only thing that can affect BlitFramebuffers other than the currently
bound framebuffers is the scissor so we need to save that off and reset it.
If we don't do this, applications that use a scissor together with
CopyImageSubData will get accidentally scissored copies.

Tested-by: Markus Wick <markus at selfnet.de>
Reviewed-by: Anuj Phogat <anuj.phogat@gmail.com>
src/mesa/drivers/common/meta_copy_image.c

index 1729766f78d8e0b60e1069070754c1ecaea36298..149ed18503cae0e5c3659b0f769bcde74f42e9a7 100644 (file)
@@ -138,8 +138,8 @@ _mesa_meta_CopyImageSubData_uncompressed(struct gl_context *ctx,
          goto cleanup;
    }
 
-   /* We really only need to stash the bound framebuffers. */
-   _mesa_meta_begin(ctx, 0);
+   /* We really only need to stash the bound framebuffers and scissor. */
+   _mesa_meta_begin(ctx, MESA_META_SCISSOR);
 
    _mesa_GenFramebuffers(2, fbos);
    _mesa_BindFramebuffer(GL_READ_FRAMEBUFFER, fbos[0]);