aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/drivers/gpu/drm/virtio/virtgpu_drv.h
diff options
context:
space:
mode:
authorDongwon Kim <dongwon.kim@intel.com>2024-10-21 02:08:03 +0300
committerDmitry Osipenko <dmitry.osipenko@collabora.com>2024-11-18 21:18:15 +0300
commitd3c55b8ab6fe5fa2e7ab02efd36d09c39ee5022f (patch)
treee226d78b0f725788d53f8d9f6790f1933441dfac /drivers/gpu/drm/virtio/virtgpu_drv.h
parentdrm/virtio: Use drm_gem_plane_helper_prepare_fb() (diff)
downloadwireguard-linux-d3c55b8ab6fe5fa2e7ab02efd36d09c39ee5022f.tar.xz
wireguard-linux-d3c55b8ab6fe5fa2e7ab02efd36d09c39ee5022f.zip
drm/virtio: New fence for every plane update
Having a fence linked to a virtio_gpu_framebuffer in the plane update sequence would cause conflict when several planes referencing the same framebuffer (e.g. Xorg screen covering multi-displays configured for an extended mode) and those planes are updated concurrently. So it is needed to allocate a fence for every plane state instead of the framebuffer. Signed-off-by: Dongwon Kim <dongwon.kim@intel.com> [dmitry.osipenko@collabora.com: rebase, fix up, edit commit message] Signed-off-by: Dmitry Osipenko <dmitry.osipenko@collabora.com> Acked-by: Vivek Kasireddy <vivek.kasireddy@intel.com> Reviewed-by: Rob Clark <robdclark@gmail.com> Link: https://patchwork.freedesktop.org/patch/msgid/20241020230803.247419-2-dmitry.osipenko@collabora.com
Diffstat (limited to 'drivers/gpu/drm/virtio/virtgpu_drv.h')
-rw-r--r--drivers/gpu/drm/virtio/virtgpu_drv.h7
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 76f6f29f819a..96eb576bc1b8 100644
--- a/drivers/gpu/drm/virtio/virtgpu_drv.h
+++ b/drivers/gpu/drm/virtio/virtgpu_drv.h
@@ -194,6 +194,13 @@ struct virtio_gpu_framebuffer {
#define to_virtio_gpu_framebuffer(x) \
container_of(x, struct virtio_gpu_framebuffer, base)
+struct virtio_gpu_plane_state {
+ struct drm_plane_state base;
+ struct virtio_gpu_fence *fence;
+};
+#define to_virtio_gpu_plane_state(x) \
+ container_of(x, struct virtio_gpu_plane_state, base)
+
struct virtio_gpu_queue {
struct virtqueue *vq;
spinlock_t qlock;