[PATCH] ui/sdl2: Fix assumption of EGL presence at runtime

Anthony Roberts posted 1 patch 2 days, 4 hours ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20260409110256.684-1-anthony.roberts@linaro.org
Maintainers: "Marc-André Lureau" <marcandre.lureau@redhat.com>
ui/sdl2.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
[PATCH] ui/sdl2: Fix assumption of EGL presence at runtime
Posted by Anthony Roberts 2 days, 4 hours ago
The original commit had a section of code which worked on the assumption
that if OpenGL was enabled at build, it was present on the end user machine,
and calls could be made to it. This is not always the case (such as Windows
on Arm devices).

This line should have also included a runtime check.

This commit moves the relevant line to inside a runtime check for OpenGL.

Fixes: 52053b7e0a0e ("ui/sdl2: Implement dpy dmabuf functions")
Resolves: https://gitlab.com/qemu-project/qemu/-/work_items/3347
Signed-off-by: Anthony Roberts <anthony.roberts@linaro.org>
---
 ui/sdl2.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/ui/sdl2.c b/ui/sdl2.c
index aaaede56e0..987ad334bb 100644
--- a/ui/sdl2.c
+++ b/ui/sdl2.c
@@ -120,15 +120,15 @@ void sdl2_window_create(struct sdl2_console *scon)
 
         scon->winctx = SDL_GL_CreateContext(scon->real_window);
         SDL_GL_SetSwapInterval(0);
+
+#ifdef CONFIG_OPENGL
+        qemu_egl_display = eglGetCurrentDisplay();
+#endif
     } else {
         /* The SDL renderer is only used by sdl2-2D, when OpenGL is disabled */
         scon->real_renderer = SDL_CreateRenderer(scon->real_window, -1, 0);
     }
 
-#ifdef CONFIG_OPENGL
-    qemu_egl_display = eglGetCurrentDisplay();
-#endif
-
     sdl_update_caption(scon);
 }
 
-- 
2.53.0
Re: [PATCH] ui/sdl2: Fix assumption of EGL presence at runtime
Posted by Alex Bennée 2 days, 3 hours ago
Anthony Roberts <anthony.roberts@linaro.org> writes:

> The original commit had a section of code which worked on the assumption
> that if OpenGL was enabled at build, it was present on the end user machine,
> and calls could be made to it. This is not always the case (such as Windows
> on Arm devices).
>
> This line should have also included a runtime check.
>
> This commit moves the relevant line to inside a runtime check for OpenGL.
>
> Fixes: 52053b7e0a0e ("ui/sdl2: Implement dpy dmabuf functions")
> Resolves: https://gitlab.com/qemu-project/qemu/-/work_items/3347
> Signed-off-by: Anthony Roberts <anthony.roberts@linaro.org>

Reviewed-by: Alex Bennée <alex.bennee@linaro.org>

-- 
Alex Bennée
Virtualisation Tech Lead @ Linaro
Re: [PATCH] ui/sdl2: Fix assumption of EGL presence at runtime
Posted by Peter Maydell 1 day, 19 hours ago
On Thu, 9 Apr 2026 at 13:09, Alex Bennée <alex.bennee@linaro.org> wrote:
>
> Anthony Roberts <anthony.roberts@linaro.org> writes:
>
> > The original commit had a section of code which worked on the assumption
> > that if OpenGL was enabled at build, it was present on the end user machine,
> > and calls could be made to it. This is not always the case (such as Windows
> > on Arm devices).
> >
> > This line should have also included a runtime check.
> >
> > This commit moves the relevant line to inside a runtime check for OpenGL.
> >
> > Fixes: 52053b7e0a0e ("ui/sdl2: Implement dpy dmabuf functions")
> > Resolves: https://gitlab.com/qemu-project/qemu/-/work_items/3347
> > Signed-off-by: Anthony Roberts <anthony.roberts@linaro.org>
>
> Reviewed-by: Alex Bennée <alex.bennee@linaro.org>

Applied to git directly, as requested.

thanks
-- PMM
Re: [PATCH] ui/sdl2: Fix assumption of EGL presence at runtime
Posted by Mohamed Mediouni 2 days, 3 hours ago

> On 9. Apr 2026, at 14:08, Alex Bennée <alex.bennee@linaro.org> wrote:
> 
> Anthony Roberts <anthony.roberts@linaro.org> writes:
> 
>> The original commit had a section of code which worked on the assumption
>> that if OpenGL was enabled at build, it was present on the end user machine,
>> and calls could be made to it. This is not always the case (such as Windows
>> on Arm devices).
>> 
>> This line should have also included a runtime check.
>> 
>> This commit moves the relevant line to inside a runtime check for OpenGL.
>> 
>> Fixes: 52053b7e0a0e ("ui/sdl2: Implement dpy dmabuf functions")
>> Resolves: https://gitlab.com/qemu-project/qemu/-/work_items/3347
>> Signed-off-by: Anthony Roberts <anthony.roberts@linaro.org>
> 
> Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
> 
> -- 
> Alex Bennée
> Virtualisation Tech Lead @ Linaro
> 

Hello,

As a related note, modern QEMU is built assuming EGL which Windows does
not ship as a system library - and doesn’t support a WGL-only configuration...

For those distributing QEMU binaries on Windows, they should bring an
EGL implementation along such as the one in mingw-w64-angleproject 
or Mesa for Windows if they wish to support OpenGL functionality
instead of having crashes.

Wonder what’s the best place to document that requirement…
Re: [PATCH] ui/sdl2: Fix assumption of EGL presence at runtime
Posted by Alex Bennée 2 days, 2 hours ago
Mohamed Mediouni <mohamed@unpredictable.fr> writes:

(Add Stefan to CC)

>> On 9. Apr 2026, at 14:08, Alex Bennée <alex.bennee@linaro.org> wrote:
>> 
>> Anthony Roberts <anthony.roberts@linaro.org> writes:
>> 
>>> The original commit had a section of code which worked on the assumption
>>> that if OpenGL was enabled at build, it was present on the end user machine,
>>> and calls could be made to it. This is not always the case (such as Windows
>>> on Arm devices).
>>> 
>>> This line should have also included a runtime check.
>>> 
>>> This commit moves the relevant line to inside a runtime check for OpenGL.
>>> 
>>> Fixes: 52053b7e0a0e ("ui/sdl2: Implement dpy dmabuf functions")
>>> Resolves: https://gitlab.com/qemu-project/qemu/-/work_items/3347
>>> Signed-off-by: Anthony Roberts <anthony.roberts@linaro.org>
>> 
>> Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
>> 
>> -- 
>> Alex Bennée
>> Virtualisation Tech Lead @ Linaro
>> 
>
> Hello,
>
> As a related note, modern QEMU is built assuming EGL which Windows does
> not ship as a system library - and doesn’t support a WGL-only configuration...
>
> For those distributing QEMU binaries on Windows, they should bring an
> EGL implementation along such as the one in mingw-w64-angleproject 
> or Mesa for Windows if they wish to support OpenGL functionality
> instead of having crashes.

Stefan handles the semi-official windows binaries. 

Generally our windows coverage is poor as most developers can only use
the mingw cross compilers (if they even check) and we have one Windows
x86_64 runner via Cirrus which doesn't have bare metal access to the
hypervisor.

It would be nice to have better testing coverage in CI but that would
require someone to fund some bare metal runners and volunteer to keep
them updated.

>
> Wonder what’s the best place to document that requirement…

docs/system/devices/virtio/virtio-gpu.rst

has a fairly in-depth breakdown of the various moving parts you need.

-- 
Alex Bennée
Virtualisation Tech Lead @ Linaro