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>
This commit is contained in:
Adam Jackson 2021-04-23 01:17:00 -04:00 committed by Marge Bot
parent b91e58ad79
commit 21411368a3
4 changed files with 9 additions and 27 deletions

View File

@ -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;
/*@} */
/**

View File

@ -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;

View File

@ -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.

View File

@ -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];