summaryrefslogtreecommitdiff
path: root/src/egl
diff options
context:
space:
mode:
authorChia-I Wu <olv@lunarg.com>2011-01-12 17:49:43 +0800
committerChia-I Wu <olv@lunarg.com>2011-01-12 18:10:15 +0800
commit1e4f412242391000eea3fd28452865c3d27f987d (patch)
tree2d724bca9ececcdda7626da228e5ac3a72652521 /src/egl
parent4924cb9036cfe0f435a4a09db6f86d59a3a132d8 (diff)
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.
Diffstat (limited to 'src/egl')
-rw-r--r--src/egl/main/egldriver.c19
1 files changed, 14 insertions, 5 deletions
diff --git a/src/egl/main/egldriver.c b/src/egl/main/egldriver.c
index b7c3de3e38..0f2e40abf5 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;
}