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.
This commit is contained in:
parent
1fa97ddb25
commit
d1becefb05
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue