From 02cca28b5f1b9acab403bfdad09605426bb18a23 Mon Sep 17 00:00:00 2001 From: Ray Date: Wed, 31 Dec 2025 11:08:10 +0100 Subject: [PATCH] REVIEWED: `eglGetPlatformDisplay()` usage --- src/platforms/rcore_drm.c | 26 +++++++++++--------------- 1 file changed, 11 insertions(+), 15 deletions(-) diff --git a/src/platforms/rcore_drm.c b/src/platforms/rcore_drm.c index ff0118ac5..c5b74b956 100644 --- a/src/platforms/rcore_drm.c +++ b/src/platforms/rcore_drm.c @@ -1420,30 +1420,26 @@ int InitPlatform(void) EGLint numConfigs = 0; // Get an EGL device connection - // Try eglGetPlatformDisplayEXT for better compatibility with some drivers (e.g. Mali Midgard) - // REF: https://github.com/raysan5/raylib/issues/5378 + // NOTE: eglGetPlatformDisplay() is preferred over eglGetDisplay() legacy call platform.device = EGL_NO_DISPLAY; +#if defined(EGL_VERSION_1_5) + platform.device = eglGetPlatformDisplay(EGL_PLATFORM_GBM_KHR, platform.gbmDevice, NULL); +#else + // Check if extension is available for eglGetPlatformDisplayEXT() + // NOTE: Better compatibility with some drivers (e.g. Mali Midgard) const char *eglClientExtensions = eglQueryString(EGL_NO_DISPLAY, EGL_EXTENSIONS); - if (eglClientExtensions != NULL) { if (strstr(eglClientExtensions, "EGL_EXT_platform_base") != NULL) { - PFNEGLGETPLATFORMDISPLAYEXTPROC eglGetPlatformDisplayEXT = - (PFNEGLGETPLATFORMDISPLAYEXTPROC)eglGetProcAddress("eglGetPlatformDisplayEXT"); - - if (eglGetPlatformDisplayEXT != NULL) - { - platform.device = eglGetPlatformDisplayEXT(EGL_PLATFORM_GBM_KHR, platform.gbmDevice, NULL); - } + PFNEGLGETPLATFORMDISPLAYEXTPROC eglGetPlatformDisplayEXT = (PFNEGLGETPLATFORMDISPLAYEXTPROC)eglGetProcAddress("eglGetPlatformDisplayEXT"); + if (eglGetPlatformDisplayEXT != NULL) platform.device = eglGetPlatformDisplayEXT(EGL_PLATFORM_GBM_KHR, platform.gbmDevice, NULL); } } - if (platform.device == EGL_NO_DISPLAY) - { - platform.device = eglGetDisplay((EGLNativeDisplayType)platform.gbmDevice); - } - + // In case extension not found or display could not be retrieved, try useing legacy version + if (platform.device == EGL_NO_DISPLAY) platform.device = eglGetDisplay((EGLNativeDisplayType)platform.gbmDevice); +#endif if (platform.device == EGL_NO_DISPLAY) { TRACELOG(LOG_WARNING, "DISPLAY: Failed to initialize EGL device");