d913927fe9
When `MESA_LOADER_DRIVER_OVERRIDE` is set to `zink` and the display initialization fails, fallback to software rendering. The error was reported in #10123 and it can be reproduced with: $ MESA_LOADER_DRIVER_OVERRIDE=zink eglinfo `eglinfo` would crash in `dri2_display_release()` because of `assert(dri2_dpy->ref_count > 0)`. After bisecting the error to commit8cd44b8843("egl/glx: add autoloading for zink"), I found out that, before this change, the display was set to initialized even when `_eglDriver.Initialize(disp)` failed: disp->Options.Zink = env && !strcmp(env, "zink"); // disp->Options.Zink is true if (!_eglDriver.Initialize(disp)) { [...] // Zink initialization has failed at this point // However, success is set to true: bool success = disp->Options.Zink; if (!disp->Options.Zink && !getenv("GALLIUM_DRIVER")) { [...] } // Software initialization is ignored because success is true if (!success) { [...] } } // The display is set as initialized even though it shouldn't disp->Initialized = EGL_TRUE; Resolves: https://gitlab.freedesktop.org/mesa/mesa/-/issues/10123 Fixes:8cd44b8843("egl/glx: add autoloading for zink") Signed-off-by: José Expósito <jexposit@redhat.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26184>