diff options
author | Gurchetan Singh <gurchetansingh@chromium.org> | 2021-09-21 16:20:23 -0700 |
---|---|---|
committer | Gerd Hoffmann <kraxel@redhat.com> | 2021-09-29 09:22:31 +0200 |
commit | cd7f5ca33585918febe5e2f6dc090a21cfa775b0 (patch) | |
tree | 6bbee480a5b3c6073de5ffcdea6c9be2bd3f6771 /drivers/gpu/drm/virtio/virtgpu_drv.h | |
parent | 8d6b006e1f51c99016aa39ca9e03947cbdd024e3 (diff) | |
download | linux-cd7f5ca33585918febe5e2f6dc090a21cfa775b0.tar.gz linux-cd7f5ca33585918febe5e2f6dc090a21cfa775b0.tar.bz2 linux-cd7f5ca33585918febe5e2f6dc090a21cfa775b0.zip |
drm/virtio: implement context init: add virtio_gpu_fence_event
Similar to DRM_VMW_EVENT_FENCE_SIGNALED. Sends a pollable event
to the DRM file descriptor when a fence on a specific ring is
signaled.
One difference is the event is not exposed via the UAPI -- this is
because host responses are on a shared memory buffer of type
BLOB_MEM_GUEST [this is the common way to receive responses with
virtgpu]. As such, there is no context specific read(..)
implementation either -- just a poll(..) implementation.
Signed-off-by: Gurchetan Singh <gurchetansingh@chromium.org>
Acked-by: Nicholas Verne <nverne@chromium.org>
Link: http://patchwork.freedesktop.org/patch/msgid/20210921232024.817-12-gurchetansingh@chromium.org
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Diffstat (limited to 'drivers/gpu/drm/virtio/virtgpu_drv.h')
-rw-r--r-- | drivers/gpu/drm/virtio/virtgpu_drv.h | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/drivers/gpu/drm/virtio/virtgpu_drv.h b/drivers/gpu/drm/virtio/virtgpu_drv.h index cb60d52c2bd1..e0265fe74aa5 100644 --- a/drivers/gpu/drm/virtio/virtgpu_drv.h +++ b/drivers/gpu/drm/virtio/virtgpu_drv.h @@ -138,11 +138,18 @@ struct virtio_gpu_fence_driver { spinlock_t lock; }; +#define VIRTGPU_EVENT_FENCE_SIGNALED_INTERNAL 0x10000000 +struct virtio_gpu_fence_event { + struct drm_pending_event base; + struct drm_event event; +}; + struct virtio_gpu_fence { struct dma_fence f; uint32_t ring_idx; uint64_t fence_id; bool emit_fence_info; + struct virtio_gpu_fence_event *e; struct virtio_gpu_fence_driver *drv; struct list_head node; }; |