Re: [v7] Add udmabuf misc device

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 09/14/2018 08:37 AM, Gerd Hoffmann wrote:
   Hi,

Well, no.  This is *not* about 3D, it's about software rendering, for
example cairo doing its work for gtk apps.  So the workflow would be
along these lines:

(1) guest app allocates dumb drm buffer from virtio-gpu, renders to it.

Why not let clients keep allocating memory for buffers with memfd?

The guest proxy would then create a virtio-gpu resource to wrap the shm pool memory.

The VMM would receive a number of physical addresses that can be used to create a dmabuf. The would place the new FD in the wayland protocol stream.

(2) guest app passes the buffer to wayland guest proxy (which looks
     like a wayland server/compositor to the app, but it doesn't actually
     composite anything).
(3) wayland guest proxy passes buffer handle to wayland host proxy.
(4) qemu can then use the buffer handle to lookup the virtio-gpu
     buffer, then use udmabuf to create a host dma-buf for it.
(5) host dma-buf can be passed to host wayland server for display, so
     guest app window shows up seamlessly on the host.

Details of the wayland protocol proxying are not hashed out yet.

Thanks for the clarification.  With dumb buffers, I guess the host can
use DRM_FORMAT_MOD_LINEAR when sending the udmabuf-created buffer to
the display.  Note there are certain cases where tiled buffers are
map-able (Intel), and with some variation of
virtio_gpu_resource_create_coherent, we could expose that to the
guest.

The coherent mapping (host-allocated resources into guest address space)
is another thing which needs to be sorted out.

That's the direction we're interested in going, though it
looks like udmabuf is orthogonal to that.

Yes, udmabuf is the other way around, guest allocates resources and we
make them available as host dmabufs.

What details on wayland protocol proxying still need to be worked out?
  That's one component of the ChromiumOS solution (virtio_wl) that
hasn't been up-streamed yet.  That method maps guest fds to host fds.

Tomeu Vizoso (Cc'ed) was looking into using virtio-serial as wayland
protocol transport between host and guest.  With udmabuf we can use
virtio-gpu drm objects to pass pixel buffers from guest to host, which
is one important building block for that.

The approach that was agreed by everybody was to add ioctls to virtio-gpu to send and receive protocol messages. The guest proxy would use those ioctls and the VMM would play as the host proxy and would use similar virtio commands. There's code for that already and someone else from Collabora is to retake the upstreaming effort at some point soon.

Regards,

Tomeu
_______________________________________________
dri-devel mailing list
dri-devel@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/dri-devel




[Index of Archives]     [Linux DRI Users]     [Linux Intel Graphics]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux