Message ID | 20210729081659.2255499-3-vivek.kasireddy@intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | drm: Add support for DRM_CAP_DEFERRED_OUT_FENCE capability | expand |
On Thu, Jul 29, 2021 at 01:16:57AM -0700, Vivek Kasireddy wrote: > This feature enables the Guest to wait to know when a resource > is completely consumed by the Host. virtio spec update? What are the exact semantics? Why a new command? Can't you simply fence one of the commands sent anyway (set_scanout probably for page-flip updates)? (feature flag is probably needed even in case we don't need a new command to make sure the host sends the completion when processing the command is actually done, i.e. in case of qemu the recently added fence support is there). take care, Gerd
Hi Gerd, > > On Thu, Jul 29, 2021 at 01:16:57AM -0700, Vivek Kasireddy wrote: > > This feature enables the Guest to wait to know when a resource > > is completely consumed by the Host. > > virtio spec update? > > What are the exact semantics? [Kasireddy, Vivek] As of now, this is still a RFC version. If everyone (Weston Upstream, drm upstream and you) agree that this is a reasonable way to solve https://gitlab.freedesktop.org/wayland/weston/-/issues/514 then I'd go ahead and send out the spec updates and cleaner versions of these patches -- with more documentation. > > Why a new command? Can't you simply fence one of the commands sent > anyway (set_scanout probably for page-flip updates)? [Kasireddy, Vivek] Yes, I think I could add a fence (and an out_fence) to set-scanout-blob. > > (feature flag is probably needed even in case we don't need a new > command to make sure the host sends the completion when processing > the command is actually done, i.e. in case of qemu the recently added > fence support is there). [Kasireddy, Vivek] The recently added fence support was for resource_flush and specifically for GTK-UI or similar backends. I tried using the same mechanism for Wayland-UI backend but ran into the above Weston issue. This feature (OUT_FENCE) is a potential solution for this issue. Thanks, Vivek > > take care, > Gerd
diff --git a/include/uapi/linux/virtio_gpu.h b/include/uapi/linux/virtio_gpu.h index 97523a95781d..0526157905b5 100644 --- a/include/uapi/linux/virtio_gpu.h +++ b/include/uapi/linux/virtio_gpu.h @@ -60,6 +60,11 @@ */ #define VIRTIO_GPU_F_RESOURCE_BLOB 3 +/* + * VIRTIO_GPU_CMD_RESOURCE_OUT_FENCE + */ +#define VIRTIO_GPU_F_OUT_FENCE 4 + enum virtio_gpu_ctrl_type { VIRTIO_GPU_UNDEFINED = 0, @@ -78,6 +83,7 @@ enum virtio_gpu_ctrl_type { VIRTIO_GPU_CMD_RESOURCE_ASSIGN_UUID, VIRTIO_GPU_CMD_RESOURCE_CREATE_BLOB, VIRTIO_GPU_CMD_SET_SCANOUT_BLOB, + VIRTIO_GPU_CMD_RESOURCE_OUT_FENCE, /* 3d commands */ VIRTIO_GPU_CMD_CTX_CREATE = 0x0200, @@ -441,4 +447,10 @@ struct virtio_gpu_resource_unmap_blob { __le32 padding; }; +/* VIRTIO_GPU_CMD_RESOURCE_OUT_FENCE */ +struct virtio_gpu_resource_out_fence { + struct virtio_gpu_ctrl_hdr hdr; + __le32 resource_id; +}; + #endif
This feature enables the Guest to wait to know when a resource is completely consumed by the Host. Cc: Gerd Hoffmann <kraxel@redhat.com> Signed-off-by: Vivek Kasireddy <vivek.kasireddy@intel.com> --- include/uapi/linux/virtio_gpu.h | 12 ++++++++++++ 1 file changed, 12 insertions(+)