diff options
author | Brian Paul <[email protected]> | 2016-08-24 08:52:29 -0600 |
---|---|---|
committer | Brian Paul <[email protected]> | 2016-08-25 07:19:35 -0600 |
commit | 2a2dc416b6816ac8914c5f45ac80545d2c09246f (patch) | |
tree | e37447b8b29c767df067efd38c510ccbd61ab87a | |
parent | 3ff0b67e1b6b492d5793c1580f4be0c6f58a1bc2 (diff) |
swrast: fix incorrectly positioned putImage() in swrast driver
Some front buffer rendering was in the wrong position. This included
scissored clears, glDrawPixels and glCopyPixels. The problem was the
y coordinate passed to putImage() didn't match the y coordinate passed
to getImage().
We fix this by setting xrb->map_y to the inverted coordinate in
swrast_map_renderbuffer() which is used later by the putImage() call.
Also pass xrb->map_y to getImage() to be symmetric.
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=97426
Cc: <[email protected]>
Reviewed-by: Eric Anholt <[email protected]>
-rw-r--r-- | src/mesa/drivers/dri/swrast/swrast.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/mesa/drivers/dri/swrast/swrast.c b/src/mesa/drivers/dri/swrast/swrast.c index 6d3b00bd465..0402232deb1 100644 --- a/src/mesa/drivers/dri/swrast/swrast.c +++ b/src/mesa/drivers/dri/swrast/swrast.c @@ -484,14 +484,14 @@ swrast_map_renderbuffer(struct gl_context *ctx, xrb->map_mode = mode; xrb->map_x = x; - xrb->map_y = y; + xrb->map_y = rb->Height - y - h; xrb->map_w = w; xrb->map_h = h; stride = w * cpp; xrb->Base.Buffer = malloc(h * stride); - sPriv->swrast_loader->getImage(dPriv, x, rb->Height - y - h, w, h, + sPriv->swrast_loader->getImage(dPriv, x, xrb->map_y, w, h, (char *) xrb->Base.Buffer, dPriv->loaderPrivate); |