[RFC xserver 05/16] DRI3/Glamor: Implement PixmapFromBuffers request

Michel Dänzer michel at daenzer.net
Fri Jun 9 02:36:24 UTC 2017


On 09/06/17 03:43 AM, Daniel Stone wrote:
> From: Louis-Francis Ratté-Boulianne <lfrb at collabora.com>
> 
> Signed-off-by: Louis-Francis Ratté-Boulianne <lfrb at collabora.com>
> Signed-off-by: Daniel Stone <daniels at collabora.com>

[...]

> diff --git a/dri3/dri3.h b/dri3/dri3.h
> index 40b8474c0..4d6699f5e 100644
> --- a/dri3/dri3.h
> +++ b/dri3/dri3.h
> @@ -39,13 +39,15 @@ typedef int (*dri3_open_client_proc)(ClientPtr client,
>                                       RRProviderPtr provider,
>                                       int *fd);
>  
> -typedef PixmapPtr (*dri3_pixmap_from_fd_proc) (ScreenPtr screen,
> -                                               int fd,
> -                                               CARD16 width,
> -                                               CARD16 height,
> -                                               CARD16 stride,
> -                                               CARD8 depth,
> -                                               CARD8 bpp);
> +typedef PixmapPtr (*dri3_pixmap_from_fds_proc) (ScreenPtr screen,
> +                                                CARD8 num_fds,
> +                                                int *fds,
> +                                                CARD16 width,
> +                                                CARD16 height,
> +                                                CARD32 *strides,
> +                                                CARD32 *offsets,
> +                                                CARD32 format,
> +                                                uint64_t modifiers);
>  
>  typedef int (*dri3_fd_from_pixmap_proc) (ScreenPtr screen,
>                                           PixmapPtr pixmap,
> @@ -66,7 +68,7 @@ typedef struct dri3_screen_info {
>      uint32_t                    version;
>  
>      dri3_open_proc              open;
> -    dri3_pixmap_from_fd_proc    pixmap_from_fd;
> +    dri3_pixmap_from_fds_proc   pixmap_from_fds;
>      dri3_fd_from_pixmap_proc    fd_from_pixmap;
>      dri3_get_formats_proc       get_formats;
>      dri3_get_modifiers_proc     get_modifiers;

Completely dropping the pixmap_from_fd hook might be a bit harsh. It
would mean drivers without pixmap_from_fds support (e.g.
xf86-video-amdgpu/ati with EXA) can't support DRI3 at all, right?


> +static PixmapPtr
> +glamor_pixmap_from_fds(ScreenPtr screen,
> +                       CARD8 num_fds, int *fds,
> +                       CARD16 width, CARD16 height,
> +                       CARD32 *strides, CARD32 *offsets,
> +                       CARD32 format, uint64_t modifier)
>  {

[...]

> @@ -612,7 +748,7 @@ glamor_dri3_open_client(ClientPtr client,
>  static dri3_screen_info_rec glamor_dri3_info = {
>      .version = 1,
>      .open_client = glamor_dri3_open_client,
> -    .pixmap_from_fd = glamor_pixmap_from_fd,
> +    .pixmap_from_fds = glamor_pixmap_from_fds,
>      .fd_from_pixmap = glamor_fd_from_pixmap,
>      .get_formats = glamor_get_formats,
>      .get_modifiers = glamor_get_modifiers,

glamor_pixmap_from_fds also needs to be exported to drivers.


Same corresponding comments on patch 6.


-- 
Earthling Michel Dänzer               |               http://www.amd.com
Libre software enthusiast             |             Mesa and X developer


More information about the xorg-devel mailing list