Hi, > Our prototype implementation uses [4], which allows the virtio-vdec > device to use buffers allocated by virtio-gpu device. > [4] https://lkml.org/lkml/2019/9/12/157 Well. I think before even discussing the protocol details we need a reasonable plan for buffer handling. I think using virtio-gpu buffers should be an optional optimization and not a requirement. Also the motivation for that should be clear (Let the host decoder write directly to virtio-gpu resources, to display video without copying around the decoded framebuffers from one device to another). Referencing virtio-gpu buffers needs a better plan than just re-using virtio-gpu resource handles. The handles are device-specific. What if there are multiple virtio-gpu devices present in the guest? I think we need a framework for cross-device buffer sharing. One possible option would be to have some kind of buffer registry, where buffers can be registered for cross-device sharing and get a unique id (a uuid maybe?). Drivers would typically register buffers on dma-buf export. Another option would be to pass around both buffer handle and buffer owner, i.e. instead of "u32 handle" have something like this: struct buffer_reference { enum device_type; /* pci, virtio-mmio, ... */ union device_address { struct pci_address pci_addr; u64 virtio_mmio_addr; [ ... ] }; u64 device_buffer_handle; /* device-specific, virtio-gpu could use resource ids here */ }; cheers, Gerd