[Mesa-dev] [PATCH v2] egl/dri2: Allow modifiers to add FDs to imports

Philipp Zabel p.zabel at pengutronix.de
Fri Aug 11 07:39:50 UTC 2017


On Wed, 2017-08-09 at 11:53 +0100, Daniel Stone wrote:
> When using dmabuf import, make sure that the modifier is actually
> allowed to add planes to the base format, as implied by the comment.
> 
> Signed-off-by: Daniel Stone <daniels at collabora.com>
---
>  src/egl/drivers/dri2/egl_dri2.c | 38 +++++++++++++++++++-------------------
>  1 file changed, 19 insertions(+), 19 deletions(-)
> 
> diff --git a/src/egl/drivers/dri2/egl_dri2.c b/src/egl/drivers/dri2/egl_dri2.c
> index f0d1ded408..14decfed99 100644
> --- a/src/egl/drivers/dri2/egl_dri2.c
> +++ b/src/egl/drivers/dri2/egl_dri2.c
> @@ -2120,6 +2120,24 @@ dri2_check_dma_buf_format(const _EGLImageAttribs *attrs)
>        return 0;
>     }
>  
> +   for (unsigned i = plane_n; i < DMA_BUF_MAX_PLANES; i++) {
> +      /**
> +       * The modifiers extension spec says:
> +       *
> +       * "Modifiers may modify any attribute of a buffer import, including
> +       *  but not limited to adding extra planes to a format which
> +       *  otherwise does not have those planes. As an example, a modifier
> +       *  may add a plane for an external compression buffer to a
> +       *  single-plane format. The exact meaning and effect of any
> +       *  modifier is canonically defined by drm_fourcc.h, not as part of
> +       *  this extension."
> +       */
> +      if (attrs->DMABufPlaneModifiersLo[i].IsPresent &&
> +          attrs->DMABufPlaneModifiersHi[i].IsPresent) {
> +         plane_n = i + 1;
> +      }
> +   }
> +

Nice, this makes sure that all planes up to the last modifier have fds
present. And since all fds are guaranteed to be present, the modifier
equality check in dri2_check_dma_buf_attribs also makes sure that there
are no missing modifiers.

Reviewed-by: Philipp Zabel <p.zabel at pengutronix.de>

regards
Philipp


More information about the mesa-dev mailing list