[Mesa-dev] [PATCH v14 08/36] gallium/winsys/drm: introduce modifier field to winsys_handle

Lucas Stach l.stach at pengutronix.de
Thu Jun 8 18:24:11 UTC 2017


Am Dienstag, den 30.05.2017, 17:23 +0530 schrieb Varad Gautam:
> From: Varad Gautam <varad.gautam at collabora.com>
> 
> we use this to import resources with format modifiers, and to support
> per-resource modifier queries.
> 
> Signed-off-by: Varad Gautam <varad.gautam at collabora.com>
> Cc: Lucas Stach <l.stach at pengutronix.de>

Reviewed-by: Lucas Stach <l.stach at pengutronix.de>

> ---
>  src/gallium/include/state_tracker/drm_driver.h | 6 ++++++
>  src/gallium/state_trackers/dri/dri2.c          | 7 +++++++
>  2 files changed, 13 insertions(+)
> 
> diff --git a/src/gallium/include/state_tracker/drm_driver.h b/src/gallium/include/state_tracker/drm_driver.h
> index c80fb09..88dda0a 100644
> --- a/src/gallium/include/state_tracker/drm_driver.h
> +++ b/src/gallium/include/state_tracker/drm_driver.h
> @@ -45,6 +45,12 @@ struct winsys_handle
>      * Output for texture_get_handle.
>      */
>     unsigned offset;
> +
> +   /**
> +    * Input to resource_from_handle.
> +    * Output from resource_get_handle.
> +    */
> +   uint64_t modifier;
>  };
>  
> 
> diff --git a/src/gallium/state_trackers/dri/dri2.c b/src/gallium/state_trackers/dri/dri2.c
> index ed6004f..f1794b7 100644
> --- a/src/gallium/state_trackers/dri/dri2.c
> +++ b/src/gallium/state_trackers/dri/dri2.c
> @@ -52,6 +52,10 @@
>  #include "dri_query_renderer.h"
>  #include "dri2_buffer.h"
>  
> +#ifndef DRM_FORMAT_MOD_INVALID
> +#define DRM_FORMAT_MOD_INVALID ((1ULL<<56) - 1)
> +#endif
> +
>  static int convert_fourcc(int format, int *dri_components_p)
>  {
>     int dri_components;
> @@ -869,6 +873,7 @@ dri2_create_image_from_name(__DRIscreen *_screen,
>     memset(&whandle, 0, sizeof(whandle));
>     whandle.type = DRM_API_HANDLE_TYPE_SHARED;
>     whandle.handle = name;
> +   whandle.modifier = DRM_FORMAT_MOD_INVALID;
>  
>     pf = dri2_format_to_pipe_format (format);
>     if (pf == PIPE_FORMAT_NONE)
> @@ -929,6 +934,7 @@ dri2_create_image_from_fd(__DRIscreen *_screen,
>        whandles[i].handle = (unsigned)fds[i];
>        whandles[i].stride = (unsigned)strides[i];
>        whandles[i].offset = (unsigned)offsets[i];
> +      whandles[i].modifier = DRM_FORMAT_MOD_INVALID;
>     }
>  
>     if (fourcc == __DRI_IMAGE_FOURCC_YVU420) {
> @@ -1143,6 +1149,7 @@ dri2_from_names(__DRIscreen *screen, int width, int height, int format,
>     whandle.handle = names[0];
>     whandle.stride = strides[0];
>     whandle.offset = offsets[0];
> +   whandle.modifier = DRM_FORMAT_MOD_INVALID;
>  
>     img = dri2_create_image_from_winsys(screen, width, height, format,
>                                         1, &whandle, loaderPrivate);




More information about the mesa-dev mailing list