Skip to content

Commit efe39c7

Browse files
committed
drm/virtio: defer backend notify for sprite update
Signed-off-by: Xue, Bosheng <bosheng.xue@intel.com>
1 parent 13ad4bf commit efe39c7

2 files changed

Lines changed: 4 additions & 26 deletions

File tree

drivers/gpu/drm/virtio/virtgpu_plane.c

Lines changed: 0 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -395,23 +395,6 @@ static void virtio_gpu_resource_flush_sprite(struct drm_plane *plane, int indx,
395395
int plane_index = 0;
396396

397397
vgfb = to_virtio_gpu_framebuffer(plane->state->fb);
398-
fence = virtio_gpu_fence_alloc(vgdev, vgdev->fence_drv.context, 0);
399-
400-
if (fence) {
401-
objs = virtio_gpu_array_alloc(1);
402-
if (!objs) {
403-
kfree(fence);
404-
return;
405-
}
406-
407-
virtio_gpu_array_add_obj(objs, vgfb->base.obj[0]);
408-
for(i=1; i<fb->format->num_planes; i++) {
409-
if(vgfb->base.obj[i] != vgfb->base.obj[0])
410-
virtio_gpu_array_add_obj(objs, vgfb->base.obj[i]);
411-
}
412-
virtio_gpu_array_lock_resv(objs);
413-
}
414-
415398
for(i=0; i<4; i++) {
416399
if(vgfb->base.obj[i]) {
417400
struct virtio_gpu_object *bo;
@@ -426,14 +409,6 @@ static void virtio_gpu_resource_flush_sprite(struct drm_plane *plane, int indx,
426409
plane_index = plane->index - vgdev->outputs[indx].plane_idx_offset;
427410
virtio_gpu_cmd_resource_flush_sprite(vgdev, indx, plane_index, fb,
428411
resource_id, cnt, x, y, width, height, objs, fence);
429-
430-
virtio_gpu_notify(vgdev);
431-
432-
if (fence) {
433-
dma_fence_wait_timeout(&fence->f, true,
434-
msecs_to_jiffies(50));
435-
dma_fence_put(&fence->f);
436-
}
437412
}
438413

439414
static void virtio_gpu_sprite_plane_update(struct drm_plane *plane,

drivers/gpu/drm/virtio/virtgpu_vq.c

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -786,7 +786,10 @@ void virtio_gpu_cmd_resource_flush_sprite(struct virtio_gpu_device *vgdev,
786786
cmd_p->offsets[i] = cpu_to_le32(fb->offsets[i]);
787787
}
788788

789-
virtio_gpu_queue_fenced_ctrl_buffer(vgdev, vbuf, fence);
789+
if (fence)
790+
virtio_gpu_queue_fenced_ctrl_buffer(vgdev, vbuf, fence);
791+
else
792+
virtio_gpu_queue_ctrl_buffer(vgdev, vbuf);
790793
}
791794

792795
void virtio_gpu_cmd_send_misc(struct virtio_gpu_device *vgdev, uint32_t scanout_id,

0 commit comments

Comments
 (0)