mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-04-18 19:00:37 +02:00
On the host side virglrenderer creates dmabuf on demand when: * cpu mapping is requested * setting up scan out * sharing buffers between guest processes On-demand dmabuf creation only works if the ctx that created the BO still exists and knows about this BO. This assumption works ok for the first 2 cases, but can break with the last one (and it does cause issues on Android). eg: * process A allocates BO and exports it as a guest dmabuf * process A closes its handle to the BO (-> detach_resource) * process B imports the guest dmabuf -> this triggers the attach_resource function in virglrenderer. If the given resource isn't a VIRGL_RESOURCE_FD_DMABUF it'll try to get one... But for this to work, process A needs to be used -> this fails because this resource was detached from it. The reason we create dmabuf on demand is to avoid hitting the number of open file descriptor limit. So to cover the 3rd case, we'll use the VIRTGPU_BLOB_FLAG_USE_SHAREABLE flag, but try to limit to as few possible buffers as possible. Acked-by: Samuel Pitoiset <samuel.pitoiset@gmail.com> Tested-by: Dmitry Osipenko <dmitry.osipenko@collabora.com> Reviewed-by: Dmitry Osipenko <dmitry.osipenko@collabora.com> Reviewed-by: Marek Olšák <marek.olsak@amd.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21658> |
||
|---|---|---|
| .. | ||
| amdgpu_virtio.c | ||
| amdgpu_virtio.h | ||
| amdgpu_virtio_bo.c | ||
| amdgpu_virtio_device.c | ||
| amdgpu_virtio_private.h | ||
| amdgpu_virtio_proto.h | ||