/*
** Initialize the direct rendering per display data and functions.
** Note: This _must_ be done before calling any other DRI routines
** (e.g., those called in AllocAndFetchScreenConfigs).
*/
if (glx_direct && glx_accel) {
dpyPriv->dri2Display = dri2CreateDisplay(dpy);
dpyPriv->driDisplay = driCreateDisplay(dpy);
}
if (glx_direct)
dpyPriv->driswDisplay = driswCreateDisplay(dpy);
---
Then in AllocAndFetchScreenConfigs(), we get our visuals and fbconfigs via:
getVisualConfigs(dpy, priv, i);
getFBConfigs(dpy, priv, i);
but then they get thrashed by:
if (psc->driScreen == NULL && priv->driswDisplay) psc->driScreen = (*priv->driswDisplay->createScreen) (psc, i, priv);
which is driCreateScreen in drisw_glx.c and ends up doing:
psc->configs = driConvertConfigs(psc->core, psc->configs, driver_configs);
which results in psc->configs being set to NULL which is causing GetGLXPrivScreenConfig to return GLX_BAD_VISUAL and thus causing glxinfo to bail.
If I ssh to a remote box, and I try to run 'glxinfo' on the remote system, it fails unless I explicitly force indirect mode via LIBGL_ALWAYS_ INDIRECT.
The problem is that without LIBGL_ALWAYS_ INDIRECT set, glx_direct gets set to true in glxext.c:
--- "LIBGL_ ALWAYS_ INDIRECT" ) == NULL); "LIBGL_ ALWAYS_ SOFTWARE" ) == NULL);
glx_direct = (getenv(
glx_accel = (getenv(
/* reenConfigs) . >dri2Display = dri2CreateDispl ay(dpy) ; >driDisplay = driCreateDispla y(dpy); >driswDisplay = driswCreateDisp lay(dpy) ;
** Initialize the direct rendering per display data and functions.
** Note: This _must_ be done before calling any other DRI routines
** (e.g., those called in AllocAndFetchSc
*/
if (glx_direct && glx_accel) {
dpyPriv-
dpyPriv-
}
if (glx_direct)
dpyPriv-
---
Then in AllocAndFetchSc reenConfigs( ), we get our visuals and fbconfigs via: Configs( dpy, priv, i); igs(dpy, priv, i);
getVisual
getFBConf
but then they get thrashed by:
psc-> driScreen = (*priv- >driswDisplay- >createScreen) (psc, i, priv);
if (psc->driScreen == NULL && priv->driswDisplay)
which is driCreateScreen in drisw_glx.c and ends up doing: gs(psc- >core, psc->configs, driver_configs);
psc->configs = driConvertConfi
which results in psc->configs being set to NULL which is causing GetGLXPrivScree nConfig to return GLX_BAD_VISUAL and thus causing glxinfo to bail.