]> git.ipfire.org Git - thirdparty/qemu.git/commitdiff
ui/spice: Enable gl=on option for non-local or remote clients
authorVivek Kasireddy <vivek.kasireddy@intel.com>
Tue, 17 Jun 2025 04:32:26 +0000 (21:32 -0700)
committerMarc-André Lureau <marcandre.lureau@redhat.com>
Mon, 14 Jul 2025 10:51:45 +0000 (14:51 +0400)
Newer versions of Spice server should be able to accept dmabuf
fds from Qemu for clients that are connected via the network.
In other words, when this option is enabled, Qemu would share
a dmabuf fd with Spice which would encode and send the data
associated with the fd to a client that could be located on
a different machine.

Cc: Gerd Hoffmann <kraxel@redhat.com>
Cc: Marc-André Lureau <marcandre.lureau@redhat.com>
Cc: Dmitry Osipenko <dmitry.osipenko@collabora.com>
Cc: Frediano Ziglio <freddy77@gmail.com>
Cc: Dongwon Kim <dongwon.kim@intel.com>
Cc: Michael Scherle <michael.scherle@rz.uni-freiburg.de>
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Signed-off-by: Vivek Kasireddy <vivek.kasireddy@intel.com>
Message-Id: <20250617043546.1022779-3-vivek.kasireddy@intel.com>

include/ui/spice-display.h
ui/spice-core.c
ui/spice-display.c

index e1a9b3618527c9b75b045900f0c6d7d1d698e34d..6c55f38c8b02ea4b0345c231d36a5a68441ec3df 100644 (file)
@@ -151,6 +151,7 @@ struct SimpleSpiceCursor {
 };
 
 extern bool spice_opengl;
+extern bool spice_remote_client;
 
 int qemu_spice_rect_is_empty(const QXLRect* r);
 void qemu_spice_rect_union(QXLRect *dest, const QXLRect *r);
index 0326c63becd01f751c72d92ace3676cf2ee2ba09..5acbdd39550a0176af251c642a850086fd122073 100644 (file)
@@ -836,9 +836,13 @@ static void qemu_spice_init(void)
 #ifdef HAVE_SPICE_GL
     if (qemu_opt_get_bool(opts, "gl", 0)) {
         if ((port != 0) || (tls_port != 0)) {
+#if SPICE_SERVER_VERSION >= 0x000f03 /* release 0.15.3 */
+            spice_remote_client = 1;
+#else
             error_report("SPICE GL support is local-only for now and "
                          "incompatible with -spice port/tls-port");
             exit(1);
+#endif
         }
         egl_init(qemu_opt_get(opts, "rendernode"), DISPLAY_GL_MODE_ON, &error_fatal);
         spice_opengl = 1;
index 9c39d2c5c8d41e0a58f23d05e240724b6ed88be5..0fb72f6d6f412b9c25a595aefe66c1e5b3147a85 100644 (file)
@@ -31,6 +31,7 @@
 #include "standard-headers/drm/drm_fourcc.h"
 
 bool spice_opengl;
+bool spice_remote_client;
 
 int qemu_spice_rect_is_empty(const QXLRect* r)
 {