_eglGetNativePlatform should not fall back to build-time configuration
Submitted by Guillaume Melquiond
Assigned to mes..@..op.org
In src/egl/main/egldisplay.c, function _eglGetNativePlatform looks at the content of nativeDisplay. If this content does not match any of the supported platforms, it returns one of the platforms selected at configure time (the first one?).
As a consequence, if Mesa is configured without X11 support for EGL and you try to run an EGL application under X, nativeDisplay contains the value returned by XOpenDisplay; then _eglNativePlatformDetectNativeDisplay returns _EGL_INVALID_PLATFORM; finally _eglGetNativePlatform falls back to _EGL_PLATFORM_WAYLAND (for instance). Mesa ends up crashing in src/egl/drivers/dri2/platform_wayland.c because dri2_dpy->wl_dpy does not point to a wl_display structure.
Note that _eglNativePlatformDetectNativeDisplay correctly infers that the platform cannot be Wayland (since nativeDisplay does not point to a Wayland structure), still _eglGetNativePlatform falls back to it. Platform types ruled out by _eglNativePlatformDetectNativeDisplay should never be returned by _eglGetNativePlatform.