[Spice-devel] [RFC v2 0/5] gstreamer-encoder: Use a dmabuf allocator if the drawable has a valid fd (v2)

Vivek Kasireddy vivek.kasireddy at intel.com
Mon Jan 23 08:41:18 UTC 2023


This patch series enables creation of Gst memory using a dmabuf fd
as the source. This ability is useful given that dmabuf is the
standard mechanism for sharing buffers between various drivers and
userspace in many Graphics and Media usecases. Currently, this is
only used/tested with Qemu and remote-viewer using the x264enc/dec
codec to stream the Guest desktop but it can be extended to other
plugins and applications.

Here is the flow of things from the Spice server side:
- The application calls gl_scanout (to update the fd) and gl_draw_async
  and also sets the flag to indicate whether it is dealing with a local
  or remote client.
- Create a new drawable and extract the dmabuf fd from the scanout
  as a response to QXL_CMD_DRAW cmd sent by the application.
- Share the drawable's copy of the fd with the Encoder.
- Send the async completion cookie to the application once the encoder
  is done using the fd.

v2:
- Used the already existing gl_scanout and gl_draw_async APIs instead
  of adding new ones.
- Slightly refactored and improved the commits and their messages.

Cc: Gerd Hoffmann <kraxel at redhat.com>
Cc: Marc-André Lureau <marcandre.lureau at redhat.com>
Cc: Dongwon Kim <dongwon.kim at intel.com>

Vivek Kasireddy (5):
  gstreamer-encoder: Use a dmabuf allocator for a valid fd
  display-channel: Extract the dmabuf fd from the scanout
  display-channel: Share the drawable's copy of fd with the encoder
  video-stream: Force stream creation for a valid dmabuf fd
  red-qxl: Add a new parameter to gl_scanout and gl_draw_async

 meson.build                |  2 +-
 server/dcc-send.cpp        | 30 ++++++++++++++++++++++++
 server/display-channel.cpp | 23 ++++++++++++++++++
 server/display-channel.h   |  4 ++++
 server/gstreamer-encoder.c | 48 +++++++++++++++++++++++++++++++++++---
 server/red-qxl.cpp         | 14 +++++++----
 server/spice-qxl.h         |  4 ++--
 server/video-encoder.h     |  7 ++++++
 server/video-stream.cpp    | 11 ++++++++-
 9 files changed, 132 insertions(+), 11 deletions(-)

-- 
2.37.2



More information about the Spice-devel mailing list