qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH] ui/sdl2: Support multiple OpenGL-enabled windows


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 Antonio

On 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



    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.

thanks

It does not make sense to check scon->opengl here; it should be always true when this function is called.

The 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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]