diff options
author | Dave Airlie <airlied@redhat.com> | 2020-02-24 10:29:46 +1000 |
---|---|---|
committer | Dylan Baker <dylan@pnwbakers.com> | 2020-02-25 08:54:33 -0800 |
commit | 555bf5f99118cf15504ca3c81c12d0a05f36caa9 (patch) | |
tree | 34c8e337cd79a99b3d66f886ce836aebffc6b815 | |
parent | c2dac5a508c140562df40f9c50d546cf0a5558d8 (diff) |
glx/drisw: fix shm put image fallback
The fallback to the non-shm put path used the wrong width here
as the pixmap is still allocated in a shared segment, so the
width needs to reflect that.
Fixes: 02c3dad0f3b4 ("Call shmget() with permission 0600 instead of 0777")
Reviewed-by: Michel Dänzer <mdaenzer@redhat.com>
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3823>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3823>
(cherry picked from commit 84395190ec8cae6158737777c8def7cc3304eb3f)
-rw-r--r-- | .pick_status.json | 2 | ||||
-rw-r--r-- | src/glx/drisw_glx.c | 7 |
2 files changed, 4 insertions, 5 deletions
diff --git a/.pick_status.json b/.pick_status.json index de8f1c62a51..ea1da78c412 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -49,7 +49,7 @@ "description": "glx/drisw: fix shm put image fallback", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "master_sha": null, "because_sha": "02c3dad0f3b4d26e0faa5cc51d06bc50d693dcdc" }, diff --git a/src/glx/drisw_glx.c b/src/glx/drisw_glx.c index dfa3218d759..985e258663e 100644 --- a/src/glx/drisw_glx.c +++ b/src/glx/drisw_glx.c @@ -193,14 +193,13 @@ swrastXPutImage(__DRIdrawable * draw, int op, ximage->bytes_per_line = stride ? stride : bytes_per_line(w * ximage->bits_per_pixel, 32); ximage->data = data; + ximage->width = ximage->bytes_per_line / ((ximage->bits_per_pixel + 7)/ 8); + ximage->height = h; + if (pdp->shminfo.shmid >= 0) { - ximage->width = ximage->bytes_per_line / ((ximage->bits_per_pixel + 7)/ 8); - ximage->height = h; XShmPutImage(dpy, drawable, gc, ximage, srcx, srcy, x, y, w, h, False); XSync(dpy, False); } else { - ximage->width = w; - ximage->height = h; XPutImage(dpy, drawable, gc, ximage, srcx, srcy, x, y, w, h); } ximage->data = NULL; |