[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