Hi,

> So perhaps this becomes:
> 
> struct vfio_device_gfx_plane_info {
>       __u64 start;
>       __u64 drm_format_mod;
>       __u32 drm_format;
>       __u32 width;
>       __u32 height;
>       __u32 stride;
>       __u32 size;
>       __u32 x_pos;
>       __u32 y_pos;
> };

Looks good.

> struct vfio_device_query_gfx_plane {
>       __u32 argsz;
>       __u32 flags;
> #define VFIO_GFX_PLANE_FLAGS_REGION_ID                (1 << 0)
> #define VFIO_GFX_PLANE_FLAGS_PLANE_ID         (1 << 1)
>       struct vfio_device_gfx_plane_info plane_info;
>       __u32 id; 
> };

Hmm, plane isn't really an ID, it is a type, with type being either
DRM_PLANE_TYPE_PRIMARY or DRM_PLANE_TYPE_CURSOR, so I don't think the
flage above make sense.

What are the nvidia plane for cursor support btw?

> The flag defines the data in the id field as either referring to a
> region (perhaps there could be multiple regions with only one active)

Well, we have a "start" field in vfio_device_gfx_plane_info (maybe we
should rename that to "offset"), which can be used to place multiple
planes into a single, fixed region.

Also I think it would be useful to have some way to figure the device
capabilities as the userspace workflow will look quite different for
the two cases.

cheers,
  Gerd

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to