Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 400919b2 authored by Lingfeng Yang's avatar Lingfeng Yang Committed by Alistair Delva
Browse files

CHROMIUM: drm/virtgpu: add memory type to virtio_gpu_object_params

This will allow us to distinguish between host-coherent and guest
memory.

BUG=chromium:924405
TEST=compile

Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/kernel/+/1629913


Reviewed-by: default avatarRobert Tarasov <tutankhamen@chromium.org>
Commit-Queue: Gurchetan Singh <gurchetansingh@chromium.org>
Tested-by: default avatarGurchetan Singh <gurchetansingh@chromium.org>
Bug: 153580313
Signed-off-by: default avatarLingfeng Yang <lfy@google.com>
Change-Id: If875c25aabf9116f825cd681b1cebcb8ac5d25ae
parent 08994a48
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -58,6 +58,9 @@ struct virtio_gpu_object_params {
	bool dumb;
	/* 3d */
	bool virgl;
    bool resource_v2;
	enum virtio_gpu_memory_type guest_memory_type;
	enum virtio_gpu_caching_type caching_type;
	uint32_t target;
	uint32_t bind;
	uint32_t depth;
@@ -82,11 +85,14 @@ struct virtio_gpu_object {
	uint32_t mapped;
	void *vmap;
	bool dumb;
	bool resource_v2;
	struct ttm_place                placement_code;
	struct ttm_placement		placement;
	struct ttm_buffer_object	tbo;
	struct ttm_bo_kmap_obj		kmap;
	bool created;
    enum virtio_gpu_memory_type guest_memory_type;
	enum virtio_gpu_caching_type caching_type;
};
#define gem_to_virtio_gpu_obj(gobj) \
	container_of((gobj), struct virtio_gpu_object, gem_base)
+2 −2
Original line number Diff line number Diff line
@@ -134,7 +134,7 @@ int virtio_gpu_gem_object_open(struct drm_gem_object *obj,
	struct virtio_gpu_object *qobj = gem_to_virtio_gpu_obj(obj);
	int r;

	if (!vgdev->has_virgl_3d)
	if (!vgdev->has_virgl_3d || qobj->resource_v2)
		return 0;

	r = virtio_gpu_object_reserve(qobj, false);
@@ -155,7 +155,7 @@ void virtio_gpu_gem_object_close(struct drm_gem_object *obj,
	struct virtio_gpu_object *qobj = gem_to_virtio_gpu_obj(obj);
	int r;

	if (!vgdev->has_virgl_3d)
	if (!vgdev->has_virgl_3d || qobj->resource_v2)
		return;

	r = virtio_gpu_object_reserve(qobj, false);
+3 −0
Original line number Diff line number Diff line
@@ -139,6 +139,9 @@ int virtio_gpu_object_create(struct virtio_gpu_device *vgdev,
		return ret;
	}
	bo->dumb = params->dumb;
	bo->resource_v2 = params->resource_v2;
	bo->guest_memory_type = params->guest_memory_type;
	bo->caching_type = params->caching_type;

	if (params->virgl) {
		virtio_gpu_cmd_resource_create_3d(vgdev, bo, params, fence);