diff options
-rw-r--r-- | glx/glxdriswrast.c | 2 | ||||
-rw-r--r-- | glx/glxext.c | 37 |
2 files changed, 25 insertions, 14 deletions
diff --git a/glx/glxdriswrast.c b/glx/glxdriswrast.c index 199f5f842..28597044f 100644 --- a/glx/glxdriswrast.c +++ b/glx/glxdriswrast.c @@ -515,7 +515,7 @@ __glXDRIscreenProbe(ScreenPtr pScreen) xfree(screen); - FatalError("GLX: could not load software renderer\n"); + LogMessage(X_ERROR, "GLX: could not load software renderer\n"); return NULL; } diff --git a/glx/glxext.c b/glx/glxext.c index 13c65dade..6ba404fb1 100644 --- a/glx/glxext.c +++ b/glx/glxext.c @@ -279,6 +279,7 @@ void GlxExtensionInit(void) ScreenPtr pScreen; int i; __GLXprovider *p; + Bool glx_provided = False; __glXContextRes = CreateNewResourceType((DeleteType)ContextGone); __glXDrawableRes = CreateNewResourceType((DeleteType)DrawableGone); @@ -289,6 +290,29 @@ void GlxExtensionInit(void) if (!AddCallback (&ClientStateCallback, glxClientCallback, 0)) return; + for (i = 0; i < screenInfo.numScreens; i++) { + pScreen = screenInfo.screens[i]; + + for (p = __glXProviderStack; p != NULL; p = p->next) { + if (p->screenProbe(pScreen) != NULL) { + LogMessage(X_INFO, + "GLX: Initialized %s GL provider for screen %d\n", + p->name, i); + break; + } + } + + if (!p) + LogMessage(X_INFO, + "GLX: no usable GL providers found for screen %d\n", i); + else + glx_provided = True; + } + + /* don't register extension if GL is not provided on any screen */ + if (!glx_provided) + return; + /* ** Add extension to server extensions. */ @@ -306,19 +330,6 @@ void GlxExtensionInit(void) } __glXErrorBase = extEntry->errorBase; - - for (i = 0; i < screenInfo.numScreens; i++) { - pScreen = screenInfo.screens[i]; - - for (p = __glXProviderStack; p != NULL; p = p->next) { - if (p->screenProbe(pScreen) != NULL) { - LogMessage(X_INFO, - "GLX: Initialized %s GL provider for screen %d\n", - p->name, i); - break; - } - } - } } /************************************************************************/ |