This is an automated email from the git hooks/post-receive script.
git pushed a commit to branch fix-release-build
in repository efl.
View the commit online.
commit e8bcf23d841140c3ddce1a48febb9bb02578fb35
Author: Cedric BAIL <[email protected]>
AuthorDate: Tue Aug 4 22:01:34 2026 -0600
evas/gl_drm: fail when no EGL config matches the scanout format
The config search walks eglChooseConfig()'s results looking for one
whose EGL_NATIVE_VISUAL_ID equals the DRM format, and if none matches it
just falls out of the loop and hands egl.config - untouched, so NULL on
first setup - to eglCreatePlatformWindowSurfaceEXT().
This is latent rather than broken today, but only just. Mesa 24 returns
XRGB2101010 configs ahead of XRGB8888, and on a rockchip + panfrost box
the format we want is at index 16 of 40; the loop finds it because it
scans them all. Nothing guarantees that ordering, and the failure mode
if it ever changes is a black screen with no diagnostic.
Clear the config before the search, since this runs again on resize and
would otherwise silently reuse a stale one, and error out if nothing
matched.
Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
---
src/modules/evas/engines/gl_drm/evas_outbuf.c | 14 ++++++++++++++
1 file changed, 14 insertions(+)
diff --git a/src/modules/evas/engines/gl_drm/evas_outbuf.c b/src/modules/evas/engines/gl_drm/evas_outbuf.c
index 4fa1252b3a..0f825ca48c 100644
--- a/src/modules/evas/engines/gl_drm/evas_outbuf.c
+++ b/src/modules/evas/engines/gl_drm/evas_outbuf.c
@@ -261,6 +261,9 @@ _evas_outbuf_egl_setup(Outbuf *ob)
goto err;
}
+ /* cleared so the check below sees a failed search rather than a config
+ * left over from an earlier setup (this runs again on resize) */
+ ob->egl.config = NULL;
for (; i < ncfg; ++i)
{
EGLint format = 0;
@@ -279,6 +282,17 @@ _evas_outbuf_egl_setup(Outbuf *ob)
}
}
+ /* Without this, a driver that offers no config matching the scanout
+ * format leaves egl.config at whatever it happened to hold and we hand
+ * that to eglCreateWindowSurface. Mesa's config ordering is not
+ * stable across releases, so fail loudly rather than render nothing. */
+ if (!ob->egl.config)
+ {
+ ERR("No EGL config found for DRM format %#x among %d configs",
+ ob->info->info.format, ncfg);
+ goto err;
+ }
+
if (ob->egl.surface != EGL_NO_SURFACE)
eglDestroySurface(ob->egl.disp, ob->egl.surface);
ob->egl.surface = EGL_NO_SURFACE;
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.