{
mtx_lock(&_eglModuleMutex);
- if (!_eglDriver)
- _eglDriver = _eglBuiltInDriver();
+ if (!_eglDriver) {
+ _eglDriver = calloc(1, sizeof(*_eglDriver));
+ if (!_eglDriver)
+ return NULL;
+ _eglInitDriverFallbacks(_eglDriver);
+ _eglInitDriver(_eglDriver);
+ }
mtx_unlock(&_eglModuleMutex);
env_var_as_boolean("LIBGL_ALWAYS_SOFTWARE", false);
best_drv = _eglMatchAndInitialize(dpy);
- if (!best_drv) {
+ if (!best_drv && !dpy->Options.ForceSoftware) {
dpy->Options.ForceSoftware = EGL_TRUE;
best_drv = _eglMatchAndInitialize(dpy);
}