Hi Gerd, While looking at the Qemu UI code, I noticed that there is a Blit operation performed to copy the Guest FB (texture) into a Host buffer before it is presented to the Host compositor. I was wondering if there are any elegant ways to eliminate this Blit to further the goal of absolute zero-copy. One idea that I am familiar with involves the usage of this extension: https://www.khronos.org/registry/EGL/extensions/WL/EGL_WL_create_wayland_buffer_from_image.txt
However, I do realize that this is very Wayland specific but we are also going to need to add explicit sync support which is currently only available in upstream Weston. I did try adding explicit sync support to GTK but the maintainers are not particularly thrilled about it: https://gitlab.gnome.org/GNOME/gtk/-/merge_requests/3410 Any other ideas as to how to eliminate that Blit cleanly? Thanks, Vivek > -----Original Message----- > From: Kasireddy, Vivek <vivek.kasire...@intel.com> > Sent: Tuesday, March 30, 2021 8:10 PM > To: qemu-devel@nongnu.org > Cc: Kasireddy, Vivek <vivek.kasire...@intel.com>; Gerd Hoffmann > <kra...@redhat.com>; Marc-André Lureau <marcandre.lur...@redhat.com>; Kim, > Dongwon <dongwon....@intel.com>; Zhang, Tina <tina.zh...@intel.com> > Subject: [PATCH 00/11] Add support for Blob resources feature > > Enabling this feature would eliminate data copies from the resource object in > the Guest to > the shadow resource in Qemu. This patch series however adds support only for > Blobs of > type VIRTIO_GPU_BLOB_MEM_GUEST with property > VIRTIO_GPU_BLOB_FLAG_USE_SHAREABLE. > > Most of the patches in this series are a rebased, refactored and bugfixed > versions of Gerd > Hoffmann's patches located here: > https://gitlab.freedesktop.org/virgl/qemu/-/commits/virtio-gpu-next > > TODO: > - Enable the combination virgl + blob resources > - Add support for VIRTGPU_BLOB_MEM_HOST3D blobs > > Cc: Gerd Hoffmann <kra...@redhat.com> > Cc: Marc-André Lureau <marcandre.lur...@redhat.com> > Cc: Dongwon Kim <dongwon....@intel.com> > Cc: Tina Zhang <tina.zh...@intel.com> > > Vivek Kasireddy (11): > ui: Get the fd associated with udmabuf driver > ui/pixman: Add qemu_pixman_to_drm_format() > virtio-gpu: Add udmabuf helpers > virtio-gpu: Add virtio_gpu_find_check_resource > virtio-gpu: Refactor virtio_gpu_set_scanout > virtio-gpu: Refactor virtio_gpu_create_mapping_iov > virtio-gpu: Add initial definitions for blob resources > virtio-gpu: Add virtio_gpu_resource_create_blob > virtio-gpu: Add helpers to create and destroy dmabuf objects > virtio-gpu: Add virtio_gpu_set_scanout_blob > virtio-gpu: Update cursor data using blob > > hw/display/meson.build | 2 +- > hw/display/trace-events | 2 + > hw/display/virtio-gpu-3d.c | 3 +- > hw/display/virtio-gpu-base.c | 3 + > hw/display/virtio-gpu-udmabuf.c | 276 +++++++++++++ > hw/display/virtio-gpu.c | 423 +++++++++++++++----- > include/hw/virtio/virtio-gpu-bswap.h | 16 + > include/hw/virtio/virtio-gpu.h | 41 +- > include/standard-headers/linux/udmabuf.h | 32 ++ > include/standard-headers/linux/virtio_gpu.h | 1 + > include/ui/console.h | 3 + > include/ui/qemu-pixman.h | 1 + > scripts/update-linux-headers.sh | 3 + > ui/meson.build | 1 + > ui/qemu-pixman.c | 35 +- > ui/udmabuf.c | 40 ++ > 16 files changed, 772 insertions(+), 110 deletions(-) create mode 100644 > hw/display/virtio-gpu-udmabuf.c create mode 100644 include/standard- > headers/linux/udmabuf.h > create mode 100644 ui/udmabuf.c > > -- > 2.26.2