| From 872e2fe2d51951715de1adaafbf90b38b77293ca Mon Sep 17 00:00:00 2001 |
| From: Anthoine Bourgeois <anthoine.bourgeois@gmail.com> |
| Date: Wed, 18 Mar 2020 10:04:22 +0000 |
| Subject: [PATCH] CHROMIUM: drm/virtio: implement context init: probe for |
| feature |
| |
| Let's probe for VIRTIO_GPU_F_CONTEXT_INIT. |
| |
| There's a DRM_INFO line over 80 characters. checkpatch seems to |
| prefer that over splitting lines, so go with that until a better |
| solution can be determined. |
| |
| Signed-off-by: Anthoine Bourgeois <anthoine.bourgeois@gmail.com> |
| |
| BUG=b:176158390 |
| TEST=glxgears and vkcube |
| |
| Change-Id: Ia34425f81ca8ededbbfcb5a4d8264e687119802f |
| Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/kernel/+/2645218 |
| Reviewed-by: Gurchetan Singh <gurchetansingh@chromium.org> |
| Tested-by: Chia-I Wu <olv@google.com> |
| Commit-Queue: Chia-I Wu <olv@google.com> |
| --- |
| drivers/gpu/drm/virtio/virtgpu_debugfs.c | 1 + |
| drivers/gpu/drm/virtio/virtgpu_drv.c | 1 + |
| drivers/gpu/drm/virtio/virtgpu_drv.h | 1 + |
| drivers/gpu/drm/virtio/virtgpu_kms.c | 8 ++++++-- |
| 4 files changed, 9 insertions(+), 2 deletions(-) |
| |
| diff --git a/drivers/gpu/drm/virtio/virtgpu_debugfs.c b/drivers/gpu/drm/virtio/virtgpu_debugfs.c |
| index c2b20e0ee030..b3d7046b549c 100644 |
| --- a/drivers/gpu/drm/virtio/virtgpu_debugfs.c |
| +++ b/drivers/gpu/drm/virtio/virtgpu_debugfs.c |
| @@ -54,6 +54,7 @@ static int virtio_gpu_features(struct seq_file *m, void *data) |
| virtio_gpu_add_bool(m, "blob resources", vgdev->has_resource_blob); |
| virtio_gpu_add_int(m, "cap sets", vgdev->num_capsets); |
| virtio_gpu_add_int(m, "scanouts", vgdev->num_scanouts); |
| + virtio_gpu_add_bool(m, "context init", vgdev->has_context_init); |
| if (vgdev->host_visible_region.len) { |
| seq_printf(m, "%-16s : 0x%lx +0x%lx\n", "host visible region", |
| (unsigned long)vgdev->host_visible_region.addr, |
| diff --git a/drivers/gpu/drm/virtio/virtgpu_drv.c b/drivers/gpu/drm/virtio/virtgpu_drv.c |
| index a21dc3ad6f88..db06926519e7 100644 |
| --- a/drivers/gpu/drm/virtio/virtgpu_drv.c |
| +++ b/drivers/gpu/drm/virtio/virtgpu_drv.c |
| @@ -166,6 +166,7 @@ static unsigned int features[] = { |
| VIRTIO_GPU_F_EDID, |
| VIRTIO_GPU_F_RESOURCE_UUID, |
| VIRTIO_GPU_F_RESOURCE_BLOB, |
| + VIRTIO_GPU_F_CONTEXT_INIT, |
| }; |
| static struct virtio_driver virtio_gpu_driver = { |
| .feature_table = features, |
| diff --git a/drivers/gpu/drm/virtio/virtgpu_drv.h b/drivers/gpu/drm/virtio/virtgpu_drv.h |
| index 4915923a16e0..c1273465b975 100644 |
| --- a/drivers/gpu/drm/virtio/virtgpu_drv.h |
| +++ b/drivers/gpu/drm/virtio/virtgpu_drv.h |
| @@ -243,6 +243,7 @@ struct virtio_gpu_device { |
| bool has_resource_assign_uuid; |
| bool has_resource_blob; |
| bool has_host_visible; |
| + bool has_context_init; |
| struct virtio_shm_region host_visible_region; |
| struct drm_mm host_visible_mm; |
| |
| diff --git a/drivers/gpu/drm/virtio/virtgpu_kms.c b/drivers/gpu/drm/virtio/virtgpu_kms.c |
| index 81573d0a06ea..44e4e76ea98c 100644 |
| --- a/drivers/gpu/drm/virtio/virtgpu_kms.c |
| +++ b/drivers/gpu/drm/virtio/virtgpu_kms.c |
| @@ -191,12 +191,16 @@ int virtio_gpu_init(struct drm_device *dev) |
| (unsigned long)vgdev->host_visible_region.addr, |
| (unsigned long)vgdev->host_visible_region.len); |
| } |
| + if (virtio_has_feature(vgdev->vdev, VIRTIO_GPU_F_CONTEXT_INIT)) { |
| + vgdev->has_context_init = true; |
| + } |
| |
| - DRM_INFO("features: %cvirgl %cedid %cresource_blob %chost_visible\n", |
| + DRM_INFO("features: %cvirgl %cedid %cresource_blob %chost_visible %ccontext_init\n", |
| vgdev->has_virgl_3d ? '+' : '-', |
| vgdev->has_edid ? '+' : '-', |
| vgdev->has_resource_blob ? '+' : '-', |
| - vgdev->has_host_visible ? '+' : '-'); |
| + vgdev->has_host_visible ? '+' : '-', |
| + vgdev->has_context_init ? '+' : '-'); |
| |
| ret = virtio_find_vqs(vgdev->vdev, 2, vqs, callbacks, names, NULL); |
| if (ret) { |
| -- |
| 2.17.1 |
| |