Mesa (master): st/mesa: fix incorrect glCopyPixels position on fallback path

Brian Paul brianp at kemper.freedesktop.org
Thu Feb 17 17:13:47 UTC 2011


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

Author: Brian Paul <brianp at vmware.com>
Date:   Thu Feb 17 10:09:37 2011 -0700

st/mesa: fix incorrect glCopyPixels position on fallback path

If we hit the pipe_get/put_tile() path for setting up the glCopyPixels
texture we were passing the wrong x/y position to pipe_get_tile().
The x/y position was already accounted for in the pipe_get_transfer()
call so we were effectively reading from 2*readX, 2*readY.

NOTE: This is a candidate for the 7.9 and 7.10 branches.

---

 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 0752700..63b646b 100644
--- a/src/mesa/state_tracker/st_cb_drawpixels.c
+++ b/src/mesa/state_tracker/st_cb_drawpixels.c
@@ -1284,7 +1284,8 @@ st_CopyPixels(struct gl_context *ctx, GLint srcx, GLint srcy,
    else {
       /* CPU-based fallback/conversion */
       struct pipe_transfer *ptRead =
-         pipe_get_transfer(st->pipe, rbRead->texture, 0, 0,
+         pipe_get_transfer(st->pipe, rbRead->texture,
+                           0, 0, /* level, layer */
                            PIPE_TRANSFER_READ,
                            readX, readY, readW, readH);
       struct pipe_transfer *ptTex;
@@ -1308,7 +1309,7 @@ st_CopyPixels(struct gl_context *ctx, GLint srcx, GLint srcy,
          enum pipe_format readFormat, drawFormat;
          readFormat = util_format_linear(rbRead->texture->format);
          drawFormat = util_format_linear(pt->format);
-         pipe_get_tile_rgba_format(pipe, ptRead, readX, readY, readW, readH,
+         pipe_get_tile_rgba_format(pipe, ptRead, 0, 0, readW, readH,
                                    readFormat, buf);
          pipe_put_tile_rgba_format(pipe, ptTex, pack.SkipPixels, pack.SkipRows,
                                    readW, readH, drawFormat, buf);
@@ -1317,7 +1318,7 @@ st_CopyPixels(struct gl_context *ctx, GLint srcx, GLint srcy,
       else {
          /* GL_DEPTH */
          GLuint *buf = (GLuint *) malloc(width * height * sizeof(GLuint));
-         pipe_get_tile_z(pipe, ptRead, readX, readY, readW, readH, buf);
+         pipe_get_tile_z(pipe, ptRead, 0, 0, readW, readH, buf);
          pipe_put_tile_z(pipe, ptTex, pack.SkipPixels, pack.SkipRows,
                          readW, readH, buf);
          free(buf);




More information about the mesa-commit mailing list