spice/server
Vivek Kasireddy b2fcf9b3fe dcc-send: Encode and send gl_draw stream data to the remote client
For remote (or non-gl) clients, if a valid gl_draw stream exists,
then we first extract the dmabuf fd associated with the scanout and
share it with the encoder along with other key parameters such as
stride, width and height. Once the encoder finishes creating an
encoded buffer (using the dmabuf fd as input), we then send it
over to the client. And, as soon as the encoder notifies that it
is no longer using the dmabuf fd, we send a gl_draw_done async to
the application.

Cc: Frediano Ziglio <freddy77@gmail.com>
Cc: Gerd Hoffmann <kraxel@redhat.com>
Cc: Marc-André Lureau <marcandre.lureau@redhat.com>
Cc: Dongwon Kim <dongwon.kim@intel.com>
Signed-off-by: Vivek Kasireddy <vivek.kasireddy@intel.com>
Acked-by: Frediano Ziglio <freddy77@gmail.com>
2025-03-16 04:28:20 +00:00
..
tests tests: Add missing output file to gitignore list 2025-03-16 03:50:40 +00:00
.gitignore gitignore: Reuse top-level gitignore 2016-12-14 19:09:21 +00:00
agent-msg-filter.c Improve big endian support for agent messages 2020-10-25 20:01:54 +00:00
agent-msg-filter.h Declare exported functions as C 2020-05-01 06:58:08 +01:00
cache-item.h cache-item: Move RedCachePipeItem declaration to common-graphics-channel.h 2020-06-23 13:24:06 +01:00
cache-item.tmpl.cpp Use smart pointers for RedPipeItem 2020-07-13 19:48:08 +01:00
char-device.cpp clang-tidy: use C++ casting 2021-09-28 09:36:49 +01:00
char-device.h Use smart pointers for RedPipeItem 2020-07-13 19:48:08 +01:00
common-graphics-channel.cpp clang-tidy: use C++ casting 2021-09-28 09:36:49 +01:00
common-graphics-channel.h red-pipe-item: Add and use a small utility class for easier initialization 2020-07-13 19:47:55 +01:00
cursor-channel-client.cpp cursor-channel-client: Remove unused variable 2021-06-04 08:56:44 +01:00
cursor-channel-client.h Remove GObject from RedChannel 2020-05-01 06:58:09 +01:00
cursor-channel.cpp red-parse-qxl: Use a base reference class for RedCursorCmd 2021-08-04 13:01:05 +01:00
cursor-channel.h red-parse-qxl: Use a base reference class for RedCursorCmd 2021-08-04 13:01:05 +01:00
dcc-private.h Send real time to client 2024-06-04 20:32:25 +01:00
dcc-send.cpp dcc-send: Encode and send gl_draw stream data to the remote client 2025-03-16 04:28:20 +00:00
dcc.cpp dcc: Create a stream associated with gl_draw for non-gl clients 2025-03-16 04:05:43 +00:00
dcc.h dcc: Check to see if the client supports multiple codecs 2025-03-15 20:32:36 +00:00
dispatcher.cpp clang-tidy: replace C headers with C++ 2021-08-26 07:35:09 +01:00
dispatcher.h dispatcher: Update documentation 2020-06-25 09:12:37 +01:00
display-channel-private.h dcc: Create a stream associated with gl_draw for non-gl clients 2025-03-16 04:05:43 +00:00
display-channel.cpp dcc: Create a stream associated with gl_draw for non-gl clients 2025-03-16 04:05:43 +00:00
display-channel.h several conversions to std::array 2021-08-23 10:41:11 +01:00
display-limits.h Receive the GraphicsDeviceInfo message from the streaming agent 2019-01-29 15:46:54 +01:00
event-loop.c event-loop: Avoid useless cast 2020-06-29 09:14:25 +01:00
glib-compat.h Fix g_memdup deprecation warning with glib >= 2.68 2021-05-05 06:35:56 +01:00
glz-encode-match.tmpl.c Do not check for HAVE_CONFIG_H 2019-04-30 09:26:55 +01:00
glz-encode.tmpl.c glz-encode: Remove obsolete reference segment 2019-08-12 10:48:02 +01:00
glz-encoder-dict.c clang-tidy: do not use else after return 2021-04-11 07:49:21 +01:00
glz-encoder-dict.h Make headers independent 2021-05-18 10:13:41 +01:00
glz-encoder-priv.h glz-encoder-dict: Remove useless __packed__ attribute 2019-08-02 10:55:20 +01:00
glz-encoder.c clang-tidy: use uppercase numeric literals 2021-05-09 07:00:21 +01:00
glz-encoder.h Declare exported functions as C 2020-05-01 06:58:08 +01:00
gstreamer-encoder.c gstreamer-encoder: Use a h/w based encoder with Intel GPUs if possible 2025-03-15 17:15:13 +00:00
image-cache.cpp clang-tidy: use nullptr 2021-04-12 06:50:05 +01:00
image-cache.h Remove useless typedefs 2021-08-26 20:59:41 +01:00
image-encoders.cpp clang-tidy: use C++ casting 2021-09-28 09:36:49 +01:00
image-encoders.h Declare exported functions as C 2020-05-01 06:58:08 +01:00
inputs-channel-client.cpp clang-tidy: use nullptr 2021-04-12 06:50:05 +01:00
inputs-channel-client.h inputs-channel-client: Update RECEIVE_BUF_SIZE 2020-07-02 21:17:58 +01:00
inputs-channel.cpp clang-tidy: use C++ casting 2021-09-28 09:36:49 +01:00
inputs-channel.h clang-tidy: fix inconsistent declarations 2021-05-09 11:19:30 +01:00
jpeg-encoder.c jpeg: optimize compression process 2025-03-13 07:52:04 +00:00
jpeg-encoder.h Make headers independent 2021-05-18 10:13:41 +01:00
lz4-encoder.c Do not check for HAVE_CONFIG_H 2019-04-30 09:26:55 +01:00
lz4-encoder.h Make headers independent 2021-05-18 10:13:41 +01:00
main-channel-client.cpp clang-tidy: use C++ casting 2021-09-28 09:36:49 +01:00
main-channel-client.h clang-tidy: fix inconsistent declarations 2021-05-09 11:19:30 +01:00
main-channel.cpp Report name/uuid and agent connected tokens support. 2022-01-04 10:16:19 +00:00
main-channel.h clang-tidy: fix inconsistent declarations 2021-05-09 11:19:30 +01:00
main-dispatcher.cpp Send real time to client 2024-06-04 20:32:25 +01:00
main-dispatcher.h Wrap spice.h in order to do some adjustment 2020-05-01 06:58:09 +01:00
Makefile.am red-parse-qxl: Use a base reference class for RedCursorCmd 2021-08-04 13:01:05 +01:00
memslot.c clang-tidy: use C++ casting 2021-09-28 09:36:49 +01:00
memslot.h Declare exported functions as C 2020-05-01 06:58:08 +01:00
meson.build red-parse-qxl: Use a base reference class for RedCursorCmd 2021-08-04 13:01:05 +01:00
migration-protocol.h Use start/end-packet.h headers instead of direct GCC attribute 2019-07-22 14:56:00 +01:00
mjpeg-encoder.c Avoid build error caused by conflicting types for INT32 2021-04-15 08:51:44 +01:00
net-utils.c Fix setsockopt on FreeBSD 2021-04-17 13:19:17 +01:00
net-utils.h Fix compatibility with MSG_NOSIGNAL and Darwin 2020-05-19 10:01:47 +01:00
pixmap-cache.cpp Removed only written "items" field from PixmapCache 2021-05-18 08:38:27 +01:00
pixmap-cache.h Remove useless typedefs 2021-08-26 20:59:41 +01:00
pop-visibility.h Reduce C++ symbols visibility 2020-05-01 06:58:09 +01:00
push-visibility.h Reduce C++ symbols visibility 2020-05-01 06:58:09 +01:00
red-channel-capabilities.c Fix g_memdup deprecation warning with glib >= 2.68 2021-05-05 06:35:56 +01:00
red-channel-capabilities.h red-channel-capabilities: Removed unused stuff from RedChannelCapabilities 2020-05-01 06:58:09 +01:00
red-channel-client.cpp clang-tidy: use C++ casting 2021-09-28 09:36:49 +01:00
red-channel-client.h red-channel-client: Make RedChannelClient::pipe_item_is_linked const 2020-07-20 10:17:20 +01:00
red-channel.cpp clang-tidy: use C++ casting 2021-09-28 09:36:49 +01:00
red-channel.h Use smart pointers for RedPipeItem 2020-07-13 19:48:08 +01:00
red-client.cpp red-client: Remove FOREACH_CHANNEL_CLIENT macro 2021-06-01 09:02:48 +01:00
red-client.h Use red::shared_ptr_counted for RedChannelClient 2020-05-01 06:58:09 +01:00
red-common.h red-common: Fix typo in comment 2020-06-04 11:07:32 +02:00
red-parse-qxl.cpp clang-tidy: use C++ casting 2021-09-28 09:36:49 +01:00
red-parse-qxl.h Remove useless typedefs 2021-08-26 20:59:41 +01:00
red-pipe-item.cpp clang-tidy: use C++ casting 2021-09-28 09:36:49 +01:00
red-pipe-item.h red-pipe-item: Remove red_pipe_item_(un)ref 2020-07-13 19:48:18 +01:00
red-qxl.cpp Warn on invalid surface_id at qxl_spice_destroy_surface_wait() 2024-06-12 12:40:33 +01:00
red-qxl.h Declare exported functions as C 2020-05-01 06:58:08 +01:00
red-record-qxl.cpp Remove useless typedefs 2021-08-26 20:59:41 +01:00
red-record-qxl.h Declare exported functions as C 2020-05-01 06:58:08 +01:00
red-replay-qxl.cpp clang-tidy: use C++ casting 2021-09-28 09:36:49 +01:00
red-stream-device.cpp clang-tidy: use C++ casting 2021-09-28 09:36:49 +01:00
red-stream-device.h Use smart pointers for RedPipeItem 2020-07-13 19:48:08 +01:00
red-stream.cpp red-stream: disable socket_set_cork() on Darwin 2024-05-26 16:41:37 +01:00
red-stream.h server: add SSL_OP_NO_RENEGOTIATION fallback path 2023-05-26 22:41:44 +01:00
red-worker.cpp Warn on invalid surface_id at qxl_spice_destroy_surface_wait() 2024-06-12 12:40:33 +01:00
red-worker.h red-worker: Limit visibility 2021-06-01 22:08:55 +01:00
reds-private.h Send real time to client 2024-06-04 20:32:25 +01:00
reds.cpp Send real time to client 2024-06-04 20:32:25 +01:00
reds.h Send real time to client 2024-06-04 20:32:25 +01:00
safe-list.hpp Fix C++ compatibility issue 2022-07-19 10:11:55 +01:00
smartcard-channel-client.cpp Use smart pointers for RedPipeItem 2020-07-13 19:48:08 +01:00
smartcard-channel-client.h char-device: Remove GObject from RedCharDevice 2020-05-01 06:58:09 +01:00
smartcard.cpp smartcard: Fix compiling for Windows platform 2023-05-30 19:44:15 +01:00
smartcard.h Use smart pointers for RedPipeItem 2020-07-13 19:48:08 +01:00
sound.cpp Send real time to client 2024-06-04 20:32:25 +01:00
sound.h Send real time to client 2024-06-04 20:32:25 +01:00
spice-audio.h clang-tidy: fix inconsistent declarations 2021-05-09 11:19:30 +01:00
spice-bitmap-utils.c clang-tidy: do not use else after return 2021-04-11 07:49:21 +01:00
spice-bitmap-utils.h Declare exported functions as C 2020-05-01 06:58:08 +01:00
spice-bitmap-utils.tmpl.c Use local variable to compute gradual score 2020-02-27 07:55:43 +00:00
spice-char.h clang-tidy: fix inconsistent declarations 2021-05-09 11:19:30 +01:00
spice-core.h windows: Do not include headers not available on Windows 2019-01-31 10:48:34 +00:00
spice-input.h Declare public exported functions as C 2020-05-01 06:58:08 +01:00
spice-migration.h Declare public exported functions as C 2020-05-01 06:58:08 +01:00
spice-qxl.h clang-tidy: fix inconsistent declarations 2021-05-09 11:19:30 +01:00
spice-replay.h Declare public exported functions as C 2020-05-01 06:58:08 +01:00
spice-server-enums.c.tmpl Avoids registering type just to get the nick of an enum value 2020-05-01 06:58:09 +01:00
spice-server-enums.h.tmpl Avoids registering type just to get the nick of an enum value 2020-05-01 06:58:09 +01:00
spice-server.h Declare public exported functions as C 2020-05-01 06:58:08 +01:00
spice-server.syms Remove reference to removed ABI 2019-08-15 11:16:42 +01:00
spice-version.h.in build-sys: generate spice-version.h 2014-11-27 14:27:33 +01:00
spice-wrapped.h sound: Move define "trick" to spice-wrapped.h header 2020-05-28 14:37:36 +01:00
spice.h Make red-replay-qxl.h a public header 2016-11-10 06:37:15 +00:00
spicevmc.cpp clang-tidy: use C++ casting 2021-09-28 09:36:49 +01:00
stat-file.c stat-file: Use proper macro for container computation 2019-08-22 08:53:23 +01:00
stat-file.h Make headers independent 2021-05-18 10:13:41 +01:00
stat.h Wrap spice.h in order to do some adjustment 2020-05-01 06:58:09 +01:00
stream-channel.cpp clang-tidy: use C++ casting 2021-09-28 09:36:49 +01:00
stream-channel.h clang-tidy: fix inconsistent declarations 2021-05-09 11:19:30 +01:00
sw-canvas.c Do not check for HAVE_CONFIG_H 2019-04-30 09:26:55 +01:00
sys-socket.c sys-socket: Add socket_newpair utility 2019-05-07 10:14:05 +01:00
sys-socket.h Fix compatibility with MSG_NOSIGNAL and Darwin 2020-05-19 10:01:47 +01:00
tree.cpp clang-tidy: use C++ casting 2021-09-28 09:36:49 +01:00
tree.h Remove useless typedefs 2021-08-26 20:59:41 +01:00
utils.c Do not check for HAVE_CONFIG_H 2019-04-30 09:26:55 +01:00
utils.h Declare exported functions as C 2020-05-01 06:58:08 +01:00
utils.hpp utils: Add a base light class for reference counting 2021-08-04 13:01:01 +01:00
video-encoder.h dcc-send: Encode and send gl_draw stream data to the remote client 2025-03-16 04:28:20 +00:00
video-stream.cpp dcc: Create a stream associated with gl_draw for non-gl clients 2025-03-16 04:05:43 +00:00
video-stream.h dcc: Create a stream associated with gl_draw for non-gl clients 2025-03-16 04:05:43 +00:00
websocket.c clang-tidy: fix inconsistent declarations 2021-05-09 11:19:30 +01:00
websocket.h Declare exported functions as C 2020-05-01 06:58:08 +01:00
zlib-encoder.c Do not check for HAVE_CONFIG_H 2019-04-30 09:26:55 +01:00
zlib-encoder.h Make headers independent 2021-05-18 10:13:41 +01:00