Mesa (master): glx: Move server GLX vendor and version strings to glx_screen

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Thu Apr 29 22:33:32 UTC 2021


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

Author: Adam Jackson <ajax at redhat.com>
Date:   Fri Apr 23 01:17:00 2021 -0400

glx: Move server GLX vendor and version strings to glx_screen

These can in fact vary between screens.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10418>

---

 src/glx/glxclient.h                   | 17 +++++------------
 src/glx/glxcmds.c                     |  5 ++---
 src/glx/glxext.c                      | 12 ++----------
 src/glx/tests/clientinfo_unittest.cpp |  2 --
 4 files changed, 9 insertions(+), 27 deletions(-)

diff --git a/src/glx/glxclient.h b/src/glx/glxclient.h
index fef20147dcf..7123217b0ca 100644
--- a/src/glx/glxclient.h
+++ b/src/glx/glxclient.h
@@ -505,9 +505,13 @@ struct glx_screen
    const struct glx_screen_vtable *vtable;
 
     /**
-     * GLX extension string reported by the X-server.
+     * \name Storage for the GLX vendor, version, and extension strings
      */
+   /*@{ */
    const char *serverGLXexts;
+   const char *serverGLXvendor;
+   const char *serverGLXversion;
+   /*@} */
 
     /**
      * GLX extension string to be reported to applications.  This is the
@@ -576,17 +580,6 @@ struct glx_display
      */
    /*@{ */
    int minorVersion;
-   /*@} */
-
-    /**
-     * \name Storage for the servers GLX vendor and versions strings.
-     *
-     * These are the same for all screens on this display. These fields will
-     * be filled in on demand.
-     */
-   /*@{ */
-   const char *serverGLXvendor;
-   const char *serverGLXversion;
    /*@} */
 
     /**
diff --git a/src/glx/glxcmds.c b/src/glx/glxcmds.c
index 16594791ca7..ecf94eeb04c 100644
--- a/src/glx/glxcmds.c
+++ b/src/glx/glxcmds.c
@@ -1359,17 +1359,16 @@ glXQueryServerString(Display * dpy, int screen, int name)
    struct glx_display *priv;
    const char **str;
 
-
    if (GetGLXPrivScreenConfig(dpy, screen, &priv, &psc) != Success) {
       return NULL;
    }
 
    switch (name) {
    case GLX_VENDOR:
-      str = &priv->serverGLXvendor;
+      str = &psc->serverGLXvendor;
       break;
    case GLX_VERSION:
-      str = &priv->serverGLXversion;
+      str = &psc->serverGLXversion;
       break;
    case GLX_EXTENSIONS:
       str = &psc->serverGLXexts;
diff --git a/src/glx/glxext.c b/src/glx/glxext.c
index 3ba4f220924..91d021e710e 100644
--- a/src/glx/glxext.c
+++ b/src/glx/glxext.c
@@ -280,8 +280,6 @@ glx_display_free(struct glx_display *priv)
    }
 
    FreeScreenConfigs(priv);
-   free((char *) priv->serverGLXvendor);
-   free((char *) priv->serverGLXversion);
 
    __glxHashDestroy(priv->glXDrawHash);
 
@@ -801,6 +799,8 @@ glx_screen_cleanup(struct glx_screen *psc)
       psc->visuals = NULL;   /* NOTE: just for paranoia */
    }
    free((char *) psc->serverGLXexts);
+   free((char *) psc->serverGLXvendor);
+   free((char *) psc->serverGLXversion);
 }
 
 /*
@@ -821,12 +821,6 @@ AllocAndFetchScreenConfigs(Display * dpy, struct glx_display * priv)
    if (!priv->screens)
       return GL_FALSE;
 
-   priv->serverGLXversion = __glXQueryServerString(dpy, 0, GLX_VERSION);
-   if (priv->serverGLXversion == NULL) {
-      FreeScreenConfigs(priv);
-      return GL_FALSE;
-   }
-
    for (i = 0; i < screens; i++, psc++) {
       psc = NULL;
 #if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
@@ -892,8 +886,6 @@ __glXInitialize(Display * dpy)
    dpyPriv->codes = *XInitExtension(dpy, __glXExtensionName);
 
    dpyPriv->dpy = dpy;
-   dpyPriv->serverGLXvendor = 0x0;
-   dpyPriv->serverGLXversion = 0x0;
 
    /* This GLX implementation requires X_GLXQueryExtensionsString
     * and X_GLXQueryServerString, which are new in GLX 1.1.
diff --git a/src/glx/tests/clientinfo_unittest.cpp b/src/glx/tests/clientinfo_unittest.cpp
index c81a7dccebe..e9996080160 100644
--- a/src/glx/tests/clientinfo_unittest.cpp
+++ b/src/glx/tests/clientinfo_unittest.cpp
@@ -43,8 +43,6 @@ public:
       this->next = 0;
       this->dpy = dpy;
       this->minorVersion = minor;
-      this->serverGLXvendor = 0;
-      this->serverGLXversion = 0;
       this->glXDrawHash = 0;
 
       this->screens = new glx_screen *[dpy->nscreens];



More information about the mesa-commit mailing list