On 2026/02/18 6:49, Dmitry Osipenko wrote:
> SDL API changes GL context to a newly created GL context, which differs
> from other GL providers that don't switch context. Change SDL backend to
> restore the original GL context. This allows Qemu's virtio-gpu to support
> new virglrenderer async-fencing feature for Virgl contexts, otherwise
> virglrenderer's vrend creates a fence-sync context on the Qemu's
> main-loop thread that erroneously stays in-use by the main-loop after
> creation, not allowing vrend's fence-sync thread switch to this new
> context that belongs to it.
>
> Reviewed-by: Akihiko Odaki <akihiko.odaki@daynix.com>
> Acked-by: Michael S. Tsirkin <mst@redhat.com>
> Tested-by: Alex Bennée <alex.bennee@linaro.org>
> Acked-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
> Reviewed-by: Yiwei Zhang <zzyiwei@gmail.com>
> Signed-off-by: Dmitry Osipenko <dmitry.osipenko@collabora.com>
> ---
> ui/sdl2-gl.c | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/ui/sdl2-gl.c b/ui/sdl2-gl.c
> index 3be17d1079af..ea2301305d3e 100644
> --- a/ui/sdl2-gl.c
> +++ b/ui/sdl2-gl.c
> @@ -168,6 +168,9 @@ QEMUGLContext sdl2_gl_create_context(DisplayGLCtx *dgc,
> SDL_GL_CONTEXT_PROFILE_ES);
> ctx = SDL_GL_CreateContext(scon->real_window);
> }
> +
> + SDL_GL_MakeCurrent(scon->real_window, scon->winctx);
Looking at this patch now, I think this should pass NULL instead of
scon->winctx instead. The patch message says it restores "the original
GL context", but with all the "unset context after GL operations"
patches, no context should be bound. As those patches do, this should
also unset the context and prevent a thread from keeping holding the
context.
Regards,
Akihiko Odaki