|
From: | Antonio Caggiano |
Subject: | Re: [PATCH] ui/sdl2: Support multiple OpenGL-enabled windows |
Date: | Thu, 8 Jun 2023 14:59:45 +0200 |
User-agent: | Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:102.0) Gecko/20100101 Thunderbird/102.11.2 |
Hi Marc-André and Akihiko, On 07/06/2023 13:24, Akihiko Odaki wrote:
On 2023/06/07 19:29, Marc-André Lureau wrote:Hi AntonioOn Wed, Jun 7, 2023 at 1:13 PM Antonio Caggiano <quic_acaggian@quicinc.com <mailto:quic_acaggian@quicinc.com>> wrote:Multiple graphics devices can be defined with an associated OpenGL enabled SDL console, hence make sure to not destroy their shaders and windows.I guess you meant multiple graphics devices can be associated to an OpenGL-enabled console and a switch event from a device destroys the shared state, but I don't see anything that associates multiple devices to a single console.
The idea is to be able to run qemu with OpenGL-enabled SDL windows and multiple GPUs [0], e.g.:
-device virtio-vga-gl -device virtio-vga[0] https://user-images.githubusercontent.com/6058008/244386705-54654833-903e-478a-85f5-d951b7c448b4.mov
It does not make sense to check scon->opengl here; it should be always true when this function is called.Signed-off-by: Antonio Caggiano <quic_acaggian@quicinc.com <mailto:quic_acaggian@quicinc.com>> --- ui/sdl2-gl.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ui/sdl2-gl.c b/ui/sdl2-gl.c index bbfa70eac3..795fb1afc9 100644 --- a/ui/sdl2-gl.c +++ b/ui/sdl2-gl.c @@ -89,7 +89,7 @@ void sdl2_gl_switch(DisplayChangeListener *dcl, scon->surface = new_surface; - if (is_placeholder(new_surface) && qemu_console_get_index(dcl->con)) { + if (is_placeholder(new_surface) && !scon->opengl) { qemu_gl_fini_shader(scon->gls); scon->gls = NULL; sdl2_window_destroy(scon);This was introduced in commit c821a58ee7003c2a0567dddaee33c2a5ae71c404 by Akihiko.Why should the window visibility behaviour be different whether it uses opengl or not ?If you are fixing a GL/shader crash, maybe it needs to be done differently.thanksThe condition qemu_console_get_index(dcl->con) should not be removed either. This keeps the first console persistent and makes sure the user can always interact with QEMU with the GUI SDL2 provides.
The problem I encounter when adding a second GPUs is that its related SDL console gets its window and shaders destroyed, which are definitely something I need for rendering it. :D
Do you think where is a better way to avoid that?
Regards, Akihiko Odaki
Cheers, Antonio Caggiano
[Prev in Thread] | Current Thread | [Next in Thread] |