drm/virtio: params struct for virtio_gpu_cmd_create_resource()
Add format, width and height fields to the virtio_gpu_object_params struct. With that in place we can use the parameter struct for virtio_gpu_cmd_create_resource() calls too. Signed-off-by: Gerd Hoffmann <kraxel@redhat.com> Acked-by: Noralf Trønnes <noralf@tronnes.org> Link: http://patchwork.freedesktop.org/patch/msgid/20190318113332.10900-4-kraxel@redhat.com
This commit is contained in:
Родитель
4441235f95
Коммит
f9659329f2
|
@ -51,6 +51,9 @@
|
|||
#define DRIVER_PATCHLEVEL 0
|
||||
|
||||
struct virtio_gpu_object_params {
|
||||
uint32_t format;
|
||||
uint32_t width;
|
||||
uint32_t height;
|
||||
unsigned long size;
|
||||
};
|
||||
|
||||
|
@ -247,9 +250,7 @@ int virtio_gpu_alloc_vbufs(struct virtio_gpu_device *vgdev);
|
|||
void virtio_gpu_free_vbufs(struct virtio_gpu_device *vgdev);
|
||||
void virtio_gpu_cmd_create_resource(struct virtio_gpu_device *vgdev,
|
||||
struct virtio_gpu_object *bo,
|
||||
uint32_t format,
|
||||
uint32_t width,
|
||||
uint32_t height);
|
||||
struct virtio_gpu_object_params *params);
|
||||
void virtio_gpu_cmd_unref_resource(struct virtio_gpu_device *vgdev,
|
||||
uint32_t resource_id);
|
||||
void virtio_gpu_cmd_transfer_to_host_2d(struct virtio_gpu_device *vgdev,
|
||||
|
|
|
@ -88,7 +88,6 @@ int virtio_gpu_mode_dumb_create(struct drm_file *file_priv,
|
|||
struct virtio_gpu_object_params params = { 0 };
|
||||
int ret;
|
||||
uint32_t pitch;
|
||||
uint32_t format;
|
||||
|
||||
if (args->bpp != 32)
|
||||
return -EINVAL;
|
||||
|
@ -97,16 +96,17 @@ int virtio_gpu_mode_dumb_create(struct drm_file *file_priv,
|
|||
args->size = pitch * args->height;
|
||||
args->size = ALIGN(args->size, PAGE_SIZE);
|
||||
|
||||
params.format = virtio_gpu_translate_format(DRM_FORMAT_HOST_XRGB8888);
|
||||
params.width = args->width;
|
||||
params.height = args->height;
|
||||
params.size = args->size;
|
||||
ret = virtio_gpu_gem_create(file_priv, dev, ¶ms, &gobj,
|
||||
&args->handle);
|
||||
if (ret)
|
||||
goto fail;
|
||||
|
||||
format = virtio_gpu_translate_format(DRM_FORMAT_HOST_XRGB8888);
|
||||
obj = gem_to_virtio_gpu_obj(gobj);
|
||||
virtio_gpu_cmd_create_resource(vgdev, obj, format,
|
||||
args->width, args->height);
|
||||
virtio_gpu_cmd_create_resource(vgdev, obj, ¶ms);
|
||||
|
||||
/* attach the object to the resource */
|
||||
ret = virtio_gpu_object_attach(vgdev, obj, NULL);
|
||||
|
|
|
@ -302,6 +302,9 @@ static int virtio_gpu_resource_create_ioctl(struct drm_device *dev, void *data,
|
|||
INIT_LIST_HEAD(&validate_list);
|
||||
memset(&mainbuf, 0, sizeof(struct ttm_validate_buffer));
|
||||
|
||||
params.format = rc->format;
|
||||
params.width = rc->width;
|
||||
params.height = rc->height;
|
||||
params.size = rc->size;
|
||||
|
||||
/* allocate a single page size object */
|
||||
|
@ -314,8 +317,7 @@ static int virtio_gpu_resource_create_ioctl(struct drm_device *dev, void *data,
|
|||
obj = &qobj->gem_base;
|
||||
|
||||
if (!vgdev->has_virgl_3d) {
|
||||
virtio_gpu_cmd_create_resource(vgdev, qobj, rc->format,
|
||||
rc->width, rc->height);
|
||||
virtio_gpu_cmd_create_resource(vgdev, qobj, ¶ms);
|
||||
|
||||
ret = virtio_gpu_object_attach(vgdev, qobj, NULL);
|
||||
} else {
|
||||
|
|
|
@ -376,9 +376,7 @@ retry:
|
|||
/* create a basic resource */
|
||||
void virtio_gpu_cmd_create_resource(struct virtio_gpu_device *vgdev,
|
||||
struct virtio_gpu_object *bo,
|
||||
uint32_t format,
|
||||
uint32_t width,
|
||||
uint32_t height)
|
||||
struct virtio_gpu_object_params *params)
|
||||
{
|
||||
struct virtio_gpu_resource_create_2d *cmd_p;
|
||||
struct virtio_gpu_vbuffer *vbuf;
|
||||
|
@ -388,9 +386,9 @@ void virtio_gpu_cmd_create_resource(struct virtio_gpu_device *vgdev,
|
|||
|
||||
cmd_p->hdr.type = cpu_to_le32(VIRTIO_GPU_CMD_RESOURCE_CREATE_2D);
|
||||
cmd_p->resource_id = cpu_to_le32(bo->hw_res_handle);
|
||||
cmd_p->format = cpu_to_le32(format);
|
||||
cmd_p->width = cpu_to_le32(width);
|
||||
cmd_p->height = cpu_to_le32(height);
|
||||
cmd_p->format = cpu_to_le32(params->format);
|
||||
cmd_p->width = cpu_to_le32(params->width);
|
||||
cmd_p->height = cpu_to_le32(params->height);
|
||||
|
||||
virtio_gpu_queue_ctrl_buffer(vgdev, vbuf);
|
||||
bo->created = true;
|
||||
|
|
Загрузка…
Ссылка в новой задаче