Mesa (master): egl: When EGL_DRIVER is set, do not add other drivers.

Chia-I Wu olv at kemper.freedesktop.org
Wed Jan 12 10:10:33 UTC 2011


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

Author: Chia-I Wu <olv at lunarg.com>
Date:   Wed Jan 12 17:49:43 2011 +0800

egl: When EGL_DRIVER is set, do not add other drivers.

Setting EGL_DRIVER forces the driver to be loaded, as documented.  There
should be no fallbacks.

---

 src/egl/main/egldriver.c |   19 ++++++++++++++-----
 1 files changed, 14 insertions(+), 5 deletions(-)

diff --git a/src/egl/main/egldriver.c b/src/egl/main/egldriver.c
index b7c3de3..0f2e40a 100644
--- a/src/egl/main/egldriver.c
+++ b/src/egl/main/egldriver.c
@@ -432,7 +432,7 @@ _eglGetSearchPath(void)
  *
  * The user driver is specified by EGL_DRIVER.
  */
-static void
+static EGLBoolean
 _eglAddUserDriver(void)
 {
    const char *search_path = _eglGetSearchPath();
@@ -463,7 +463,11 @@ _eglAddUserDriver(void)
                mod->BuiltIn = _eglBuiltInDrivers[i].main;
          }
       }
+
+      return EGL_TRUE;
    }
+
+   return EGL_FALSE;
 }
 
 
@@ -507,10 +511,14 @@ _eglAddDrivers(void)
    if (_eglModules)
       return EGL_TRUE;
 
-   /* the order here decides the priorities of the drivers */
-   _eglAddUserDriver();
-   _eglAddGalliumDriver();
-   _eglAddBuiltInDrivers();
+   if (!_eglAddUserDriver()) {
+      /*
+       * Add other drivers only when EGL_DRIVER is not set.  The order here
+       * decides the priorities.
+       */
+      _eglAddGalliumDriver();
+      _eglAddBuiltInDrivers();
+   }
 
    return (_eglModules != NULL);
 }
@@ -535,6 +543,7 @@ _eglMatchDriver(_EGLDisplay *dpy, EGLBoolean use_probe)
 
    if (!_eglAddDrivers()) {
       _eglUnlockMutex(&_eglModuleMutex);
+      _eglLog(_EGL_WARNING, "failed to find any driver");
       return EGL_FALSE;
    }
 




More information about the mesa-commit mailing list