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:
parent
b91e58ad79
commit
21411368a3
|
@ -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;
|
||||
/*@} */
|
||||
|
||||
/**
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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];
|
||||
|
|
Loading…
Reference in New Issue