diff --git a/src/egl/main/eglapi.c b/src/egl/main/eglapi.c index b1a48668b76..b9f179c2ce3 100644 --- a/src/egl/main/eglapi.c +++ b/src/egl/main/eglapi.c @@ -695,10 +695,17 @@ eglInitialize(EGLDisplay dpy, EGLint *major, EGLint *minor) if (disp->Options.ForceSoftware) RETURN_EGL_ERROR(disp, EGL_NOT_INITIALIZED, EGL_FALSE); else { - disp->Options.Zink = EGL_FALSE; - disp->Options.ForceSoftware = EGL_TRUE; - if (!_eglDriver.Initialize(disp)) - RETURN_EGL_ERROR(disp, EGL_NOT_INITIALIZED, EGL_FALSE); + bool success = disp->Options.Zink; + if (!disp->Options.Zink && !getenv("GALLIUM_DRIVER")) { + disp->Options.Zink = EGL_TRUE; + success = _eglDriver.Initialize(disp); + } + if (!success) { + disp->Options.Zink = EGL_FALSE; + disp->Options.ForceSoftware = EGL_TRUE; + if (!_eglDriver.Initialize(disp)) + RETURN_EGL_ERROR(disp, EGL_NOT_INITIALIZED, EGL_FALSE); + } } }