Mesa (staging/20.0): glx/drisw: add getImageShm2 path

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Tue Feb 25 17:45:09 UTC 2020


Module: Mesa
Branch: staging/20.0
Commit: 01929a5d90a3bda760a0c9dd2e7f4c09fe7fcb3a
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=01929a5d90a3bda760a0c9dd2e7f4c09fe7fcb3a

Author: Dave Airlie <airlied at redhat.com>
Date:   Fri Feb 14 15:03:24 2020 +1000

glx/drisw: add getImageShm2 path

This adds return values to the get image path, so the caller can fallback.

Fixes: 02c3dad0f3b4 ("Call shmget() with permission 0600 instead of 0777")

Reviewed-by: Michel Dänzer <mdaenzer at redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3823>
(cherry picked from commit 8d0bab8a9352bbb780bae6e7a432e73f7204f66a)

---

 .pick_status.json   |  2 +-
 src/glx/drisw_glx.c | 22 ++++++++++++++++------
 2 files changed, 17 insertions(+), 7 deletions(-)

diff --git a/.pick_status.json b/.pick_status.json
index bcc53eb14e6..3e7f79208dd 100644
--- a/.pick_status.json
+++ b/.pick_status.json
@@ -67,7 +67,7 @@
         "description": "glx/drisw: add getImageShm2 path",
         "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 069f64d5216..6e37f0274b0 100644
--- a/src/glx/drisw_glx.c
+++ b/src/glx/drisw_glx.c
@@ -288,10 +288,10 @@ swrastGetImage(__DRIdrawable * read,
    swrastGetImage2(read, x, y, w, h, 0, data, loaderPrivate);
 }
 
-static void
-swrastGetImageShm(__DRIdrawable * read,
-                  int x, int y, int w, int h,
-                  int shmid, void *loaderPrivate)
+static GLboolean
+swrastGetImageShm2(__DRIdrawable * read,
+                   int x, int y, int w, int h,
+                   int shmid, void *loaderPrivate)
 {
    struct drisw_drawable *prp = loaderPrivate;
    __GLXDRIdrawable *pread = &(prp->base);
@@ -301,7 +301,7 @@ swrastGetImageShm(__DRIdrawable * read,
 
    if (!prp->ximage || shmid != prp->shminfo.shmid) {
       if (!XCreateDrawable(prp, shmid, dpy))
-         return;
+         return GL_FALSE;
    }
    readable = pread->xDrawable;
 
@@ -312,10 +312,19 @@ swrastGetImageShm(__DRIdrawable * read,
    ximage->bytes_per_line = bytes_per_line(w * ximage->bits_per_pixel, 32);
 
    XShmGetImage(dpy, readable, ximage, x, y, ~0L);
+   return GL_TRUE;
+}
+
+static void
+swrastGetImageShm(__DRIdrawable * read,
+                  int x, int y, int w, int h,
+                  int shmid, void *loaderPrivate)
+{
+   swrastGetImageShm2(read, x, y, w, h, shmid, loaderPrivate);
 }
 
 static const __DRIswrastLoaderExtension swrastLoaderExtension_shm = {
-   .base = {__DRI_SWRAST_LOADER, 5 },
+   .base = {__DRI_SWRAST_LOADER, 6 },
 
    .getDrawableInfo     = swrastGetDrawableInfo,
    .putImage            = swrastPutImage,
@@ -325,6 +334,7 @@ static const __DRIswrastLoaderExtension swrastLoaderExtension_shm = {
    .putImageShm         = swrastPutImageShm,
    .getImageShm         = swrastGetImageShm,
    .putImageShm2        = swrastPutImageShm2,
+   .getImageShm2        = swrastGetImageShm2,
 };
 
 static const __DRIextension *loader_extensions_shm[] = {



More information about the mesa-commit mailing list