Mesa (master): st/mesa: check buffer orientation in blit_copy_pixels()

Brian Paul brianp at kemper.freedesktop.org
Fri Feb 18 17:28:56 UTC 2011


Module: Mesa
Branch: master
Commit: 09f14a60867ed902a27307da090e429546d8e838
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=09f14a60867ed902a27307da090e429546d8e838

Author: Brian Paul <brianp at vmware.com>
Date:   Fri Feb 18 10:18:34 2011 -0700

st/mesa: check buffer orientation in blit_copy_pixels()

Can't invert the region if copying between surfaces with different
orientations.

---

 src/mesa/state_tracker/st_cb_drawpixels.c |    7 ++++---
 1 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/src/mesa/state_tracker/st_cb_drawpixels.c b/src/mesa/state_tracker/st_cb_drawpixels.c
index aaa5bbf..c0da169 100644
--- a/src/mesa/state_tracker/st_cb_drawpixels.c
+++ b/src/mesa/state_tracker/st_cb_drawpixels.c
@@ -1188,6 +1188,7 @@ blit_copy_pixels(struct gl_context *ctx, GLint srcx, GLint srcy,
        !ctx->FragmentProgram.Enabled &&
        !ctx->VertexProgram.Enabled &&
        !ctx->Shader.CurrentFragmentProgram &&
+       st_fb_orientation(ctx->ReadBuffer) == st_fb_orientation(ctx->DrawBuffer) &&
        ctx->DrawBuffer->_NumColorDrawBuffers == 1) {
       struct st_renderbuffer *rbRead, *rbDraw;
       GLint drawX, drawY;
@@ -1226,11 +1227,11 @@ blit_copy_pixels(struct gl_context *ctx, GLint srcx, GLint srcy,
          struct pipe_box srcBox;
 
          /* flip src/dst position if needed */
-         if (st_fb_orientation(ctx->ReadBuffer) == Y_0_TOP)
+         if (st_fb_orientation(ctx->ReadBuffer) == Y_0_TOP) {
+            /* both buffers will have the same orientation */
             readY = ctx->ReadBuffer->Height - readY - readH;
-
-         if (st_fb_orientation(ctx->DrawBuffer) == Y_0_TOP)
             drawY = ctx->DrawBuffer->Height - drawY - readH;
+         }
 
          u_box_2d(readX, readY, readW, readH, &srcBox);
 




More information about the mesa-commit mailing list