mirror of
https://github.com/qemu/qemu.git
synced 2026-04-06 06:11:08 +00:00
ui/sdl2: Restore original context after new context creation
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> Message-ID: <20260303151422.977399-6-dmitry.osipenko@collabora.com> Message-ID: <20260304165043.1437519-8-alex.bennee@linaro.org> Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
This commit is contained in:
committed by
Alex Bennée
parent
47ab600668
commit
2b0e2edc83
@@ -139,10 +139,12 @@ QEMUGLContext sdl2_gl_create_context(DisplayGLCtx *dgc,
|
||||
QEMUGLParams *params)
|
||||
{
|
||||
struct sdl2_console *scon = container_of(dgc, struct sdl2_console, dgc);
|
||||
SDL_GLContext ctx;
|
||||
SDL_GLContext ctx, current_ctx;
|
||||
|
||||
assert(scon->opengl);
|
||||
|
||||
current_ctx = SDL_GL_GetCurrentContext();
|
||||
|
||||
SDL_GL_MakeCurrent(scon->real_window, scon->winctx);
|
||||
|
||||
SDL_GL_SetAttribute(SDL_GL_SHARE_WITH_CURRENT_CONTEXT, 1);
|
||||
@@ -167,6 +169,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, current_ctx);
|
||||
|
||||
return (QEMUGLContext)ctx;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user