drm/virtio: Prepare resource_flush to accept a fence
authorVivek Kasireddy <vivek.kasireddy@intel.com>
Thu, 10 Jun 2021 23:24:55 +0000 (16:24 -0700)
committerGerd Hoffmann <kraxel@redhat.com>
Wed, 23 Jun 2021 10:11:59 +0000 (12:11 +0200)
A fence will be added to resource_flush for resources that
are guest blobs.

Cc: Gerd Hoffmann <kraxel@redhat.com>
Signed-off-by: Vivek Kasireddy <vivek.kasireddy@intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/20210610232456.671905-3-vivek.kasireddy@intel.com
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
drivers/gpu/drm/virtio/virtgpu_drv.h
drivers/gpu/drm/virtio/virtgpu_vq.c

index d9dbc4f..d4e610a 100644 (file)
@@ -315,7 +315,9 @@ void virtio_gpu_cmd_transfer_to_host_2d(struct virtio_gpu_device *vgdev,
 void virtio_gpu_cmd_resource_flush(struct virtio_gpu_device *vgdev,
                                   uint32_t resource_id,
                                   uint32_t x, uint32_t y,
-                                  uint32_t width, uint32_t height);
+                                  uint32_t width, uint32_t height,
+                                  struct virtio_gpu_object_array *objs,
+                                  struct virtio_gpu_fence *fence);
 void virtio_gpu_cmd_set_scanout(struct virtio_gpu_device *vgdev,
                                uint32_t scanout_id, uint32_t resource_id,
                                uint32_t width, uint32_t height,
index cf84d38..2e71e91 100644 (file)
@@ -576,13 +576,16 @@ void virtio_gpu_cmd_set_scanout(struct virtio_gpu_device *vgdev,
 void virtio_gpu_cmd_resource_flush(struct virtio_gpu_device *vgdev,
                                   uint32_t resource_id,
                                   uint32_t x, uint32_t y,
-                                  uint32_t width, uint32_t height)
+                                  uint32_t width, uint32_t height,
+                                  struct virtio_gpu_object_array *objs,
+                                  struct virtio_gpu_fence *fence)
 {
        struct virtio_gpu_resource_flush *cmd_p;
        struct virtio_gpu_vbuffer *vbuf;
 
        cmd_p = virtio_gpu_alloc_cmd(vgdev, &vbuf, sizeof(*cmd_p));
        memset(cmd_p, 0, sizeof(*cmd_p));
+       vbuf->objs = objs;
 
        cmd_p->hdr.type = cpu_to_le32(VIRTIO_GPU_CMD_RESOURCE_FLUSH);
        cmd_p->resource_id = cpu_to_le32(resource_id);
@@ -591,7 +594,7 @@ void virtio_gpu_cmd_resource_flush(struct virtio_gpu_device *vgdev,
        cmd_p->r.x = cpu_to_le32(x);
        cmd_p->r.y = cpu_to_le32(y);
 
-       virtio_gpu_queue_ctrl_buffer(vgdev, vbuf);
+       virtio_gpu_queue_fenced_ctrl_buffer(vgdev, vbuf, fence);
 }
 
 void virtio_gpu_cmd_transfer_to_host_2d(struct virtio_gpu_device *vgdev,