qemu-devel
[Top][All Lists]
Advanced

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

[PATCH 00/21] -display dbus: add win32 support


From: marcandre . lureau
Subject: [PATCH 00/21] -display dbus: add win32 support
Date: Tue, 6 Jun 2023 15:56:37 +0400

From: Marc-André Lureau <marcandre.lureau@redhat.com>

Hi,

The D-Bus display doesn't work on Windows, since it relies on FDs transfer over
Unix domain socket. This isn't (yet) supported on Windows. To make it work, the
interfaces are adapted to use 'ay' WSASocketW data instead of 'h' (in a similar
fashion as QMP 'get-win32-socket').

A simple XML preprocessor helps generating the target-specific OS interfaces.

The performance on Windows isn't great though, since there is no DMABUF scanout
sharing between QEMU and the client for example. The first improvement
introduces a org.qemu.Display1.Listener.Win32.Map interface for shared
display/console memory. This can work regardless of 3d accelerated or not, and
should work across various GL implementations as well.

The second improvement relies on ANGLE/EGL Direct3D extensions enabled in virgl
(pending review at
https://gitlab.freedesktop.org/virgl/virglrenderer/-/merge_requests/1103) to
create shareable Texture2Ds and share them when the client implements the
org.qemu.Display1.Listener.Win32.D3D11 interface. This should give comparable
performance as in-process display hopefully.

Marc-André Lureau (21):
  ui/egl: export qemu_egl_get_error_string()
  ui/egl: fix make_context_current() callback return value
  ui/dbus: compile without gio/gunixfdlist.h
  scripts: add a XML preprocessor script
  ui/dbus: win32 support
  qtest: add qtest_pid()
  tests: make dbus-display-test work on win32
  ui/dbus: introduce "Interfaces" properties
  console/win32: allocate shareable display surface
  virtio-gpu/win32: allocate shareable 2d resources/images
  ui/dbus: use shared memory when possible on win32
  ui: add egl-headless support on win32
  ui/egl: default to GLES on windows
  ui: add egl_fb_read_rect()
  ui/dbus: add GL support on win32
  ui/dbus: add some GL traces
  virtio-gpu-virgl: teach it to get the QEMU EGL display
  ui/egl: query ANGLE d3d device
  ui: add optional d3d texture pointer to scanout texture
  virtio-gpu-virgl: use D3D11_SHARE_TEXTURE when available
  ui/dbus: use shared D3D11 Texture2D when possible

 MAINTAINERS                     |   1 +
 meson.build                     |  10 +-
 qapi/ui.json                    |   5 +-
 include/hw/virtio/virtio-gpu.h  |   3 +
 include/sysemu/os-win32.h       |   3 +
 include/ui/console.h            |  15 +-
 include/ui/egl-helpers.h        |  11 +-
 include/ui/gtk.h                |   6 +-
 include/ui/sdl2.h               |   3 +-
 tests/qtest/libqtest.h          |   9 +
 ui/dbus.h                       |   6 +
 audio/dbusaudio.c               |  43 ++-
 hw/display/virtio-gpu-virgl.c   |  43 ++-
 hw/display/virtio-gpu.c         |  46 ++-
 tests/qtest/dbus-display-test.c |  43 ++-
 tests/qtest/libqtest.c          |   5 +
 ui/console.c                    |  70 ++++-
 ui/dbus-chardev.c               |  20 +-
 ui/dbus-console.c               |  64 +++-
 ui/dbus-listener.c              | 527 +++++++++++++++++++++++++++++---
 ui/dbus.c                       |   4 -
 ui/egl-context.c                |  10 +-
 ui/egl-headless.c               |  25 +-
 ui/egl-helpers.c                |  98 +++++-
 ui/gtk-egl.c                    |  14 +-
 ui/gtk-gl-area.c                |   5 +-
 ui/qemu-pixman.c                |   1 +
 ui/sdl2-gl.c                    |   3 +-
 ui/spice-display.c              |   3 +-
 util/oslib-win32.c              |  33 ++
 scripts/meson.build             |   2 +
 scripts/xml-preprocess-test.py  | 136 +++++++++
 scripts/xml-preprocess.py       | 293 ++++++++++++++++++
 tests/qtest/meson.build         |   2 +-
 ui/dbus-display1.xml            | 240 ++++++++++++++-
 ui/meson.build                  |  15 +-
 ui/trace-events                 |   8 +-
 util/trace-events               |   4 +
 38 files changed, 1704 insertions(+), 125 deletions(-)
 create mode 100644 scripts/xml-preprocess-test.py
 create mode 100755 scripts/xml-preprocess.py

-- 
2.40.1




reply via email to

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