Messages in this thread | | | Date | Mon, 19 Jun 2017 08:54:09 -0600 | From | Alex Williamson <> | Subject | Re: [PATCH v9 5/7] vfio: Define vfio based dma-buf operations |
| |
On Mon, 19 Jun 2017 08:34:13 +0200 Gerd Hoffmann <kraxel@redhat.com> wrote:
> 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.
The intention was that ..._REGION_ID and ...PLANE_ID are describing what the vfio_device_query_gfx_plane.id field represents, either a region index or a plane identifier. The type of plane would be represented within the vfio_device_gfx_plane_info struct.
> 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.
That seems reasonable.
> 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.
In the region case, VFIO_DEVICE_GET_REGION_INFO would include a device specific region with a hopefully common identifier to identify it as a graphics framebuffer. VFIO_DEVICE_QUERY_GFX_PLANE would indicate the plane as a region index.
In the dmabuf case, VFIO_DEVICE_QUERY_GFX_PLANE would indicate the plane as a "plane ID" and some sort of VFIO_DEVICE_GET_GFX_PLANE(VFIO_GFX_TYPE_DMABUF) ioctl would be necessary to get a file descriptor to that plane.
What else are you thinking we need? Thanks,
Alex
| |