mbox

[PULL,0/6] Vga 20210910 patches

Message ID 20210910131709.3681492-1-kraxel@redhat.com (mailing list archive)
State New, archived
Headers show

Pull-request

git://git.kraxel.org/qemu tags/vga-20210910-pull-request

Message

Gerd Hoffmann Sept. 10, 2021, 1:17 p.m. UTC
The following changes since commit bd662023e683850c085e98c8ff8297142c2dd9f2:

  Merge remote-tracking branch 'remotes/mcayland/tags/qemu-openbios-20210908' into staging (2021-09-08 11:06:17 +0100)

are available in the Git repository at:

  git://git.kraxel.org/qemu tags/vga-20210910-pull-request

for you to fetch changes up to 6335c0b56819a5d1219ea84a11a732d0861542db:

  qxl: fix pre-save logic (2021-09-10 12:23:12 +0200)

----------------------------------------------------------------
virtio-gpu + ui: fence syncronization.
qxl: unbreak live migration.

----------------------------------------------------------------

Gerd Hoffmann (1):
  qxl: fix pre-save logic

Vivek Kasireddy (5):
  ui/gtk: Create a common release_dmabuf helper
  ui/egl: Add egl helpers to help with synchronization
  ui: Create sync objects and fences only for blobs
  ui/gtk-egl: Wait for the draw signal for dmabuf blobs
  virtio-gpu: Add gl_flushed callback

 include/ui/console.h            |  3 +++
 include/ui/egl-helpers.h        |  3 +++
 include/ui/gtk.h                |  5 ++--
 hw/display/qxl.c                |  2 +-
 hw/display/virtio-gpu-udmabuf.c |  1 +
 hw/display/virtio-gpu.c         | 32 ++++++++++++++++++++++--
 ui/egl-helpers.c                | 26 ++++++++++++++++++++
 ui/gtk-egl.c                    | 43 +++++++++++++++++++++++++++------
 ui/gtk-gl-area.c                | 20 +++++++++++++++
 ui/gtk.c                        | 26 ++++++++++++++++++--
 10 files changed, 146 insertions(+), 15 deletions(-)

Comments

Peter Maydell Sept. 10, 2021, 4:52 p.m. UTC | #1
On Fri, 10 Sept 2021 at 14:19, Gerd Hoffmann <kraxel@redhat.com> wrote:
>
> The following changes since commit bd662023e683850c085e98c8ff8297142c2dd9f2:
>
>   Merge remote-tracking branch 'remotes/mcayland/tags/qemu-openbios-20210908' into staging (2021-09-08 11:06:17 +0100)
>
> are available in the Git repository at:
>
>   git://git.kraxel.org/qemu tags/vga-20210910-pull-request
>
> for you to fetch changes up to 6335c0b56819a5d1219ea84a11a732d0861542db:
>
>   qxl: fix pre-save logic (2021-09-10 12:23:12 +0200)
>
> ----------------------------------------------------------------
> virtio-gpu + ui: fence syncronization.
> qxl: unbreak live migration.
>
> ----------------------------------------------------------------

Hi; this fails to build on the ppc64 system:

../../ui/egl-helpers.c:79:6: error: no previous prototype for
'egl_dmabuf_create_sync' [-Werror=missing-prototypes]
   79 | void egl_dmabuf_create_sync(QemuDmaBuf *dmabuf)
      |      ^~~~~~~~~~~~~~~~~~~~~~
../../ui/egl-helpers.c:95:6: error: no previous prototype for
'egl_dmabuf_create_fence' [-Werror=missing-prototypes]
   95 | void egl_dmabuf_create_fence(QemuDmaBuf *dmabuf)
      |      ^~~~~~~~~~~~~~~~~~~~~~~


The prototype is hidden behind CONFIG_GBM, but the definition is not.

Then the callsites fail:

../../ui/gtk-gl-area.c: In function 'gd_gl_area_draw':
../../ui/gtk-gl-area.c:77:9: error: implicit declaration of function
'egl_dmabuf_create_sync' [-Werror=implicit-function-declaration]
   77 |         egl_dmabuf_create_sync(dmabuf);
      |         ^~~~~~~~~~~~~~~~~~~~~~
../../ui/gtk-gl-area.c:77:9: error: nested extern declaration of
'egl_dmabuf_create_sync' [-Werror=nested-externs]
../../ui/gtk-gl-area.c:81:9: error: implicit declaration of function
'egl_dmabuf_create_fence' [-Werror=implicit-function-declaration]
   81 |         egl_dmabuf_create_fence(dmabuf);
      |         ^~~~~~~~~~~~~~~~~~~~~~~
../../ui/gtk-gl-area.c:81:9: error: nested extern declaration of
'egl_dmabuf_create_fence' [-Werror=nested-externs]


../../ui/gtk-egl.c: In function 'gd_egl_draw':
../../ui/gtk-egl.c:100:9: error: implicit declaration of function
'egl_dmabuf_create_fence' [-Werror=implicit-function-declaration]
  100 |         egl_dmabuf_create_fence(dmabuf);
      |         ^~~~~~~~~~~~~~~~~~~~~~~
../../ui/gtk-egl.c:100:9: error: nested extern declaration of
'egl_dmabuf_create_fence' [-Werror=nested-externs]
../../ui/gtk-egl.c: In function 'gd_egl_scanout_flush':
../../ui/gtk-egl.c:301:9: error: implicit declaration of function
'egl_dmabuf_create_sync' [-Werror=implicit-function-declaration]
  301 |         egl_dmabuf_create_sync(vc->gfx.guest_fb.dmabuf);
      |         ^~~~~~~~~~~~~~~~~~~~~~
../../ui/gtk-egl.c:301:9: error: nested extern declaration of
'egl_dmabuf_create_sync' [-Werror=nested-externs]


You can probably repro this on any system which has the opengl
libraries installed but not libgbm.

-- PMM
Gerd Hoffmann Sept. 14, 2021, 7:11 a.m. UTC | #2
On Fri, Sep 10, 2021 at 05:52:55PM +0100, Peter Maydell wrote:
> On Fri, 10 Sept 2021 at 14:19, Gerd Hoffmann <kraxel@redhat.com> wrote:
> >
> > The following changes since commit bd662023e683850c085e98c8ff8297142c2dd9f2:
> >
> >   Merge remote-tracking branch 'remotes/mcayland/tags/qemu-openbios-20210908' into staging (2021-09-08 11:06:17 +0100)
> >
> > are available in the Git repository at:
> >
> >   git://git.kraxel.org/qemu tags/vga-20210910-pull-request
> >
> > for you to fetch changes up to 6335c0b56819a5d1219ea84a11a732d0861542db:
> >
> >   qxl: fix pre-save logic (2021-09-10 12:23:12 +0200)
> >
> > ----------------------------------------------------------------
> > virtio-gpu + ui: fence syncronization.
> > qxl: unbreak live migration.
> >
> > ----------------------------------------------------------------
> 
> Hi; this fails to build on the ppc64 system:
> 
> ../../ui/egl-helpers.c:79:6: error: no previous prototype for
> 'egl_dmabuf_create_sync' [-Werror=missing-prototypes]
>    79 | void egl_dmabuf_create_sync(QemuDmaBuf *dmabuf)
>       |      ^~~~~~~~~~~~~~~~~~~~~~
> ../../ui/egl-helpers.c:95:6: error: no previous prototype for
> 'egl_dmabuf_create_fence' [-Werror=missing-prototypes]
>    95 | void egl_dmabuf_create_fence(QemuDmaBuf *dmabuf)
>       |      ^~~~~~~~~~~~~~~~~~~~~~~
> 
> 
> The prototype is hidden behind CONFIG_GBM, but the definition is not.
> 
> Then the callsites fail:
> 
> ../../ui/gtk-gl-area.c: In function 'gd_gl_area_draw':
> ../../ui/gtk-gl-area.c:77:9: error: implicit declaration of function
> 'egl_dmabuf_create_sync' [-Werror=implicit-function-declaration]
>    77 |         egl_dmabuf_create_sync(dmabuf);
>       |         ^~~~~~~~~~~~~~~~~~~~~~
> ../../ui/gtk-gl-area.c:77:9: error: nested extern declaration of
> 'egl_dmabuf_create_sync' [-Werror=nested-externs]
> ../../ui/gtk-gl-area.c:81:9: error: implicit declaration of function
> 'egl_dmabuf_create_fence' [-Werror=implicit-function-declaration]
>    81 |         egl_dmabuf_create_fence(dmabuf);
>       |         ^~~~~~~~~~~~~~~~~~~~~~~
> ../../ui/gtk-gl-area.c:81:9: error: nested extern declaration of
> 'egl_dmabuf_create_fence' [-Werror=nested-externs]
> 
> 
> ../../ui/gtk-egl.c: In function 'gd_egl_draw':
> ../../ui/gtk-egl.c:100:9: error: implicit declaration of function
> 'egl_dmabuf_create_fence' [-Werror=implicit-function-declaration]
>   100 |         egl_dmabuf_create_fence(dmabuf);
>       |         ^~~~~~~~~~~~~~~~~~~~~~~
> ../../ui/gtk-egl.c:100:9: error: nested extern declaration of
> 'egl_dmabuf_create_fence' [-Werror=nested-externs]
> ../../ui/gtk-egl.c: In function 'gd_egl_scanout_flush':
> ../../ui/gtk-egl.c:301:9: error: implicit declaration of function
> 'egl_dmabuf_create_sync' [-Werror=implicit-function-declaration]
>   301 |         egl_dmabuf_create_sync(vc->gfx.guest_fb.dmabuf);
>       |         ^~~~~~~~~~~~~~~~~~~~~~
> ../../ui/gtk-egl.c:301:9: error: nested extern declaration of
> 'egl_dmabuf_create_sync' [-Werror=nested-externs]
> 
> 
> You can probably repro this on any system which has the opengl
> libraries installed but not libgbm.

Vivek?  Can you have a look please?

thanks,
  Gerd
Kasireddy, Vivek Sept. 14, 2021, 10:05 p.m. UTC | #3
Hi Gerd, Peter,

> 
> On Fri, Sep 10, 2021 at 05:52:55PM +0100, Peter Maydell wrote:
> > On Fri, 10 Sept 2021 at 14:19, Gerd Hoffmann <kraxel@redhat.com> wrote:
> > >
> > > The following changes since commit bd662023e683850c085e98c8ff8297142c2dd9f2:
> > >
> > >   Merge remote-tracking branch
> > > 'remotes/mcayland/tags/qemu-openbios-20210908' into staging
> > > (2021-09-08 11:06:17 +0100)
> > >
> > > are available in the Git repository at:
> > >
> > >   git://git.kraxel.org/qemu tags/vga-20210910-pull-request
> > >
> > > for you to fetch changes up to 6335c0b56819a5d1219ea84a11a732d0861542db:
> > >
> > >   qxl: fix pre-save logic (2021-09-10 12:23:12 +0200)
> > >
> > > ----------------------------------------------------------------
> > > virtio-gpu + ui: fence syncronization.
> > > qxl: unbreak live migration.
> > >
> > > ----------------------------------------------------------------
> >
> > Hi; this fails to build on the ppc64 system:
> >
> > ../../ui/egl-helpers.c:79:6: error: no previous prototype for
> > 'egl_dmabuf_create_sync' [-Werror=missing-prototypes]
> >    79 | void egl_dmabuf_create_sync(QemuDmaBuf *dmabuf)
> >       |      ^~~~~~~~~~~~~~~~~~~~~~
> > ../../ui/egl-helpers.c:95:6: error: no previous prototype for
> > 'egl_dmabuf_create_fence' [-Werror=missing-prototypes]
> >    95 | void egl_dmabuf_create_fence(QemuDmaBuf *dmabuf)
> >       |      ^~~~~~~~~~~~~~~~~~~~~~~
> >
> >
> > The prototype is hidden behind CONFIG_GBM, but the definition is not.
> >
> > Then the callsites fail:
> >
> > ../../ui/gtk-gl-area.c: In function 'gd_gl_area_draw':
> > ../../ui/gtk-gl-area.c:77:9: error: implicit declaration of function
> > 'egl_dmabuf_create_sync' [-Werror=implicit-function-declaration]
> >    77 |         egl_dmabuf_create_sync(dmabuf);
> >       |         ^~~~~~~~~~~~~~~~~~~~~~
> > ../../ui/gtk-gl-area.c:77:9: error: nested extern declaration of
> > 'egl_dmabuf_create_sync' [-Werror=nested-externs]
> > ../../ui/gtk-gl-area.c:81:9: error: implicit declaration of function
> > 'egl_dmabuf_create_fence' [-Werror=implicit-function-declaration]
> >    81 |         egl_dmabuf_create_fence(dmabuf);
> >       |         ^~~~~~~~~~~~~~~~~~~~~~~
> > ../../ui/gtk-gl-area.c:81:9: error: nested extern declaration of
> > 'egl_dmabuf_create_fence' [-Werror=nested-externs]
> >
> >
> > ../../ui/gtk-egl.c: In function 'gd_egl_draw':
> > ../../ui/gtk-egl.c:100:9: error: implicit declaration of function
> > 'egl_dmabuf_create_fence' [-Werror=implicit-function-declaration]
> >   100 |         egl_dmabuf_create_fence(dmabuf);
> >       |         ^~~~~~~~~~~~~~~~~~~~~~~
> > ../../ui/gtk-egl.c:100:9: error: nested extern declaration of
> > 'egl_dmabuf_create_fence' [-Werror=nested-externs]
> > ../../ui/gtk-egl.c: In function 'gd_egl_scanout_flush':
> > ../../ui/gtk-egl.c:301:9: error: implicit declaration of function
> > 'egl_dmabuf_create_sync' [-Werror=implicit-function-declaration]
> >   301 |         egl_dmabuf_create_sync(vc->gfx.guest_fb.dmabuf);
> >       |         ^~~~~~~~~~~~~~~~~~~~~~
> > ../../ui/gtk-egl.c:301:9: error: nested extern declaration of
> > 'egl_dmabuf_create_sync' [-Werror=nested-externs]
> >
> >
> > You can probably repro this on any system which has the opengl
> > libraries installed but not libgbm.
> 
> Vivek?  Can you have a look please?
[Kasireddy, Vivek] I sent a v6 that fixes these compilation errors:
https://lists.nongnu.org/archive/html/qemu-devel/2021-09/msg03859.html

Compile tested the patches with and without GBM.

Thanks,
Vivek