[PATCH 2/2] [RFC] drm/virtgpu: modify uapi with stride/layer_stride fix

Gerd Hoffmann kraxel at redhat.com
Wed Oct 2 08:49:42 UTC 2019


On Tue, Oct 01, 2019 at 06:49:35PM -0700, Gurchetan Singh wrote:
> This doesn't really break userspace, since it always passes down
> 0 for stride/layer_stride currently. We could:
> 
> (1) modify UAPI now and add a VIRTGPU_PARAM_STRIDE_FIX feature

This I think.
But IMO it's not a fix, it is an added feature ...

Also missing the big picture here.  Why do we need this?

For guest object we don't have strides (virtio_gpu_resource_create_3d
doesn't allow this).

For host objects the host should know the strides.

Which I think is the reason why the stride and layer_stride fields in
the transfer commands are effectively unused ...

> -	/* TODO: add the correct stride / layer_stride. */
>  	virtio_gpu_cmd_transfer_from_host_3d
> -		(vgdev, vfpriv->ctx_id, offset, args->level, 0, 0,
> -		 &box, objs, fence);
> +		(vgdev, vfpriv->ctx_id, offset, args->level, args->stride,
> +		 args->layer_stride, &box, objs, fence);

What happens with old userspace running on a new kernel?

I don't think we can simply use the args here without checking we
actually got something from userspace ...

> diff --git a/include/uapi/drm/virtgpu_drm.h b/include/uapi/drm/virtgpu_drm.h
> index f06a789f34cd..b2fc92c3d2be 100644
> --- a/include/uapi/drm/virtgpu_drm.h
> +++ b/include/uapi/drm/virtgpu_drm.h
> @@ -117,6 +117,8 @@ struct drm_virtgpu_3d_transfer_to_host {
>  	struct drm_virtgpu_3d_box box;
>  	__u32 level;
>  	__u32 offset;
> +	__u32 stride;
> +	__u32 layer_stride;
>  };

cheers,
  Gerd



More information about the dri-devel mailing list