Vivek Kasireddy <vivek.kasire...@intel.com> writes: > To address the limitation that this option is incompatible with > remote clients, this patch series adds an option to select a > preferred codec and also enable gl=on option for clients that > are connected via the network. In other words, with this option > enabled (and the below linked Spice series merged), it would be > possible to have Qemu share a dmabuf fd with Spice, which would > then forward it to a hardware or software based encoder and > eventually send the data associated with the fd to a client that > could be located on a different machine. > > Essentially, this patch series provides a hardware accelerated, > opensource VDI option for users using Qemu and Spice by leveraging > the iGPU/dGPU on the host machine to encode the Guest FB via the > Gstreamer framework. > > v4 -> v5 (suggestions from Marc-André): > - Fix the errors (mostly 80 chars limit violations) identified by > scripts/checkpatch.pl > - Rename the globals to have a spice_ prefix for consistency > - Rename MAX_REFRESH_RATE to DEFAULT_MAX_REFRESH_RATE > - Added comments to explain how/when the gl_draw request is submitted > to spice server in the remote clients case > - Fix the mem_obj leak that would occur when the associated texture > is destroyed or when an error is encountered while creating a > texture from an fd (Dmitry and Michael) > - Merged Michael's patch to fix the mem_obj leak into this series and > added his Co-developed-by tag to the relevant patches > > v3 -> v4 (suggestions from Marc-André): > - Add a new parameter to make max_refresh_rate configurable > - Have surface_gl_create_texture_from_fd() return bool after checking > for errors > - Remove the check for PIXMAN_r5g6b5() in spice_gl_replace_fd_texture() > - Report errors in spice_gl_replace_fd_texture() when someting fails > - Use glGetError() correctly by adding an additional (dummy) call > before checking for actual errors (Dmitry) > - Add a new patch to check fd values in egl_dmabuf_export_texture() > - Rebase on Qemu master > > v2 -> v3: > - Check for errors after invoking glImportMemoryFdEXT() using > glGetError() and report the error to user (Dmitry) > > v1 -> v2: > - Replace the option name preferred-codec with video-codecs (Marc-André) > - Add a warning when an fd cannot be created from texture (Marc-André) > - Add a new patch to blit the scanout texture into a linear one to > make it work with virgl > - Rebased and tested against the latest Spice master > > Tested with the following Qemu parameters: > -device virtio-vga,max_outputs=1,xres=1920,yres=1080,blob=true > -spice port=3001,gl=on,disable-ticketing=on,video-codecs=gstreamer:h264 > > and remote-viewer --spice-debug spice://x.x.x.x:3001 on the client side. > > Associated Spice server MR (merged): > https://gitlab.freedesktop.org/spice/spice/-/merge_requests/229 > > --- > Cc: Gerd Hoffmann <kra...@redhat.com> > Cc: Marc-André Lureau <marcandre.lur...@redhat.com> > Cc: Dmitry Osipenko <dmitry.osipe...@collabora.com> > Cc: Frediano Ziglio <fredd...@gmail.com> > Cc: Michael Scherle <michael.sche...@rz.uni-freiburg.de> > Cc: Dongwon Kim <dongwon....@intel.com> > Cc: Alex Bennée <alex.ben...@linaro.org> > > Vivek Kasireddy (7): > ui/egl-helpers: Error check the fds in egl_dmabuf_export_texture() > ui/spice: Add an option for users to provide a preferred codec > ui/spice: Enable gl=on option for non-local or remote clients > ui/spice: Add an option to submit gl_draw requests at fixed rate > ui/console-gl: Add a helper to create a texture with linear memory > layout > ui/spice: Create a new texture with linear layout when gl=on is > enabled > ui/spice: Blit the scanout texture if its memory layout is not linear > > include/ui/console.h | 3 + > include/ui/spice-display.h | 5 + > include/ui/surface.h | 1 + > qemu-options.hx | 10 ++
Aside from the qemu-options we don't see a lot about SPICE in the docs. Could we add a section to cover the configuration or maybe just expand system/devices/virtio-gpu with information about how acceleration works with remote SPICE viewers? -- Alex Bennée Virtualisation Tech Lead @ Linaro