[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
- [PATCH 00/21] -display dbus: add win32 support,
marcandre . lureau <=
- [PATCH 01/21] ui/egl: export qemu_egl_get_error_string(), marcandre . lureau, 2023/06/06
- [PATCH 02/21] ui/egl: fix make_context_current() callback return value, marcandre . lureau, 2023/06/06
- [PATCH 03/21] ui/dbus: compile without gio/gunixfdlist.h, marcandre . lureau, 2023/06/06
- [PATCH 04/21] scripts: add a XML preprocessor script, marcandre . lureau, 2023/06/06
- [PATCH 05/21] ui/dbus: win32 support, marcandre . lureau, 2023/06/06
- [PATCH 06/21] qtest: add qtest_pid(), marcandre . lureau, 2023/06/06
- [PATCH 07/21] tests: make dbus-display-test work on win32, marcandre . lureau, 2023/06/06
- [PATCH 08/21] ui/dbus: introduce "Interfaces" properties, marcandre . lureau, 2023/06/06