Hi Nicolas, Le Mon 30 Jun 25, 15:16, Nicolas Dufresne a écrit : > > Hi Paul, Jernej, > > Le vendredi 23 mai 2025 à 17:43 +0200, Paul Kocialkowski a écrit : > > From: Jernej Skrabec > > > > If VPU supports untiled output, it actually supports several different > > YUV 4:2:0 layouts, namely NV12, NV21, YUV420 and YVU420. > > > > Add support for all of them. > > > > Signed-off-by: Jernej Skrabec > > Reviewed-by: Paul Kocialkowski > > --- > > > > Looks like this patch never made it, sorry about that. > > I've rebased it atop media/next and added my Reviewed-by tag. > > --- > >  drivers/staging/media/sunxi/cedrus/cedrus_hw.c | 18 +++++++++++++++++- > >  .../staging/media/sunxi/cedrus/cedrus_video.c  | 18 ++++++++++++++++++ > >  2 files changed, 35 insertions(+), 1 deletion(-) > > > > diff --git a/drivers/staging/media/sunxi/cedrus/cedrus_hw.c > > b/drivers/staging/media/sunxi/cedrus/cedrus_hw.c > > index 32af0e96e762..168d89c5a16d 100644 > > --- a/drivers/staging/media/sunxi/cedrus/cedrus_hw.c > > +++ b/drivers/staging/media/sunxi/cedrus/cedrus_hw.c > > @@ -86,9 +86,25 @@ void cedrus_dst_format_set(struct cedrus_dev *dev, > >   > >   switch (fmt->pixelformat) { > >   case V4L2_PIX_FMT_NV12: > > + case V4L2_PIX_FMT_NV21: > > + case V4L2_PIX_FMT_YUV420: > > + case V4L2_PIX_FMT_YVU420: > >   chroma_size = ALIGN(width, 16) * ALIGN(height, 16) / 2; > >   > > - reg = VE_PRIMARY_OUT_FMT_NV12; > > + switch (fmt->pixelformat) { > > + case V4L2_PIX_FMT_NV12: > > + reg = VE_PRIMARY_OUT_FMT_NV12; > > + break; > > + case V4L2_PIX_FMT_NV21: > > + reg = VE_PRIMARY_OUT_FMT_NV21; > > + break; > > + case V4L2_PIX_FMT_YUV420: > > + reg = VE_PRIMARY_OUT_FMT_YU12; > > + break; > > + case V4L2_PIX_FMT_YVU420: > > Just so its recorded, Hans added a default: case here while applying. Thanks for the notification! I would maybe have selected NV12 instead but I guess it doesn't really matter all that much since there should be layers of checking before this is reached. All the best, Paul > regards, > Nicolas > > > + reg = VE_PRIMARY_OUT_FMT_YV12; > > + break; > > + } > >   cedrus_write(dev, VE_PRIMARY_OUT_FMT, reg); > >   > >   reg = chroma_size / 2; > > diff --git a/drivers/staging/media/sunxi/cedrus/cedrus_video.c > > b/drivers/staging/media/sunxi/cedrus/cedrus_video.c > > index 77f78266f406..9fae2c7493d0 100644 > > --- a/drivers/staging/media/sunxi/cedrus/cedrus_video.c > > +++ b/drivers/staging/media/sunxi/cedrus/cedrus_video.c > > @@ -64,6 +64,21 @@ static struct cedrus_format cedrus_formats[] = { > >   .pixelformat = V4L2_PIX_FMT_NV12_32L32, > >   .directions = CEDRUS_DECODE_DST, > >   }, > > + { > > + .pixelformat = V4L2_PIX_FMT_NV21, > > + .directions = CEDRUS_DECODE_DST, > > + .capabilities = CEDRUS_CAPABILITY_UNTILED, > > + }, > > + { > > + .pixelformat = V4L2_PIX_FMT_YUV420, > > + .directions = CEDRUS_DECODE_DST, > > + .capabilities = CEDRUS_CAPABILITY_UNTILED, > > + }, > > + { > > + .pixelformat = V4L2_PIX_FMT_YVU420, > > + .directions = CEDRUS_DECODE_DST, > > + .capabilities = CEDRUS_CAPABILITY_UNTILED, > > + }, > >  }; > >   > >  #define CEDRUS_FORMATS_COUNT ARRAY_SIZE(cedrus_formats) > > @@ -140,6 +155,9 @@ void cedrus_prepare_format(struct v4l2_pix_format > > *pix_fmt) > >   break; > >   > >   case V4L2_PIX_FMT_NV12: > > + case V4L2_PIX_FMT_NV21: > > + case V4L2_PIX_FMT_YUV420: > > + case V4L2_PIX_FMT_YVU420: > >   /* 16-aligned stride. */ > >   bytesperline = ALIGN(width, 16); > >   -- Paul Kocialkowski, Independent contractor - sys-base - https://www.sys-base.io/ Free software developer - https://www.paulk.fr/ Expert in multimedia, graphics and embedded hardware support with Linux.