public inbox for linux-staging@lists.linux.dev
 help / color / mirror / Atom feed
From: Andrzej Pietrasiewicz <andrzej.p@collabora.com>
To: Benjamin Gaignard <benjamin.gaignard@collabora.com>,
	mchehab@kernel.org, tfiga@chromium.org, m.szyprowski@samsung.com,
	ming.qian@nxp.com, ezequiel@vanguardiasur.com.ar,
	p.zabel@pengutronix.de, gregkh@linuxfoundation.org,
	hverkuil-cisco@xs4all.nl, nicolas.dufresne@collabora.com
Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org,
	linux-mediatek@lists.infradead.org,
	linux-arm-msm@vger.kernel.org,
	linux-rockchip@lists.infradead.org,
	linux-staging@lists.linux.dev, kernel@collabora.com
Subject: Re: [PATCH v14 49/56] media: verisilicon: g2: Use common helpers to compute chroma and mv offsets
Date: Thu, 9 Nov 2023 15:25:37 +0100	[thread overview]
Message-ID: <f42c4105-7853-444d-aca2-bf3b34decf57@collabora.com> (raw)
In-Reply-To: <20231031163104.112469-50-benjamin.gaignard@collabora.com>

W dniu 31.10.2023 o 17:30, Benjamin Gaignard pisze:
> HEVC and VP9 are running on the same hardware and share the same
> chroma and motion vectors offset constraint.
> Create common helpers functions for these computation.
> Source and destination buffer height may not be the same because
> alignment constraint are different so use destination height to
> compute chroma offset because we target this buffer as hardware
> output.
> To be able to use the helpers in both VP9 HEVC code remove dec_params
> and use context->bit_depth instead.
> 
> Signed-off-by: Benjamin Gaignard <benjamin.gaignard@collabora.com>

Reviewed-by: Andrzej Pietrasiewicz <andrzej.p@collabora.com>

> CC: Ezequiel Garcia <ezequiel@vanguardiasur.com.ar>
> CC: Philipp Zabel <p.zabel@pengutronix.de>
> ---
>   .../media/platform/verisilicon/hantro_g2.c    | 14 ++++++++++
>   .../platform/verisilicon/hantro_g2_hevc_dec.c | 18 ++-----------
>   .../platform/verisilicon/hantro_g2_vp9_dec.c  | 26 +++----------------
>   .../media/platform/verisilicon/hantro_hw.h    |  3 +++
>   4 files changed, 23 insertions(+), 38 deletions(-)
> 
> diff --git a/drivers/media/platform/verisilicon/hantro_g2.c b/drivers/media/platform/verisilicon/hantro_g2.c
> index ee5f14c5f8f2..b880a6849d58 100644
> --- a/drivers/media/platform/verisilicon/hantro_g2.c
> +++ b/drivers/media/platform/verisilicon/hantro_g2.c
> @@ -8,6 +8,8 @@
>   #include "hantro_hw.h"
>   #include "hantro_g2_regs.h"
>   
> +#define G2_ALIGN	16
> +
>   void hantro_g2_check_idle(struct hantro_dev *vpu)
>   {
>   	int i;
> @@ -42,3 +44,15 @@ irqreturn_t hantro_g2_irq(int irq, void *dev_id)
>   
>   	return IRQ_HANDLED;
>   }
> +
> +size_t hantro_g2_chroma_offset(struct hantro_ctx *ctx)
> +{
> +	return ctx->dst_fmt.width * ctx->dst_fmt.height * ctx->bit_depth / 8;
> +}
> +
> +size_t hantro_g2_motion_vectors_offset(struct hantro_ctx *ctx)
> +{
> +	size_t cr_offset = hantro_g2_chroma_offset(ctx);
> +
> +	return ALIGN((cr_offset * 3) / 2, G2_ALIGN);
> +}
> diff --git a/drivers/media/platform/verisilicon/hantro_g2_hevc_dec.c b/drivers/media/platform/verisilicon/hantro_g2_hevc_dec.c
> index a9d4ac84a8d8..d3f8c33eb16c 100644
> --- a/drivers/media/platform/verisilicon/hantro_g2_hevc_dec.c
> +++ b/drivers/media/platform/verisilicon/hantro_g2_hevc_dec.c
> @@ -8,20 +8,6 @@
>   #include "hantro_hw.h"
>   #include "hantro_g2_regs.h"
>   
> -#define G2_ALIGN	16
> -
> -static size_t hantro_hevc_chroma_offset(struct hantro_ctx *ctx)
> -{
> -	return ctx->dst_fmt.width * ctx->dst_fmt.height * ctx->bit_depth / 8;
> -}
> -
> -static size_t hantro_hevc_motion_vectors_offset(struct hantro_ctx *ctx)
> -{
> -	size_t cr_offset = hantro_hevc_chroma_offset(ctx);
> -
> -	return ALIGN((cr_offset * 3) / 2, G2_ALIGN);
> -}
> -
>   static void prepare_tile_info_buffer(struct hantro_ctx *ctx)
>   {
>   	struct hantro_dev *vpu = ctx->dev;
> @@ -384,8 +370,8 @@ static int set_ref(struct hantro_ctx *ctx)
>   	struct hantro_dev *vpu = ctx->dev;
>   	struct vb2_v4l2_buffer *vb2_dst;
>   	struct hantro_decoded_buffer *dst;
> -	size_t cr_offset = hantro_hevc_chroma_offset(ctx);
> -	size_t mv_offset = hantro_hevc_motion_vectors_offset(ctx);
> +	size_t cr_offset = hantro_g2_chroma_offset(ctx);
> +	size_t mv_offset = hantro_g2_motion_vectors_offset(ctx);
>   	u32 max_ref_frames;
>   	u16 dpb_longterm_e;
>   	static const struct hantro_reg cur_poc[] = {
> diff --git a/drivers/media/platform/verisilicon/hantro_g2_vp9_dec.c b/drivers/media/platform/verisilicon/hantro_g2_vp9_dec.c
> index 6db1c32fce4d..342e543dee4c 100644
> --- a/drivers/media/platform/verisilicon/hantro_g2_vp9_dec.c
> +++ b/drivers/media/platform/verisilicon/hantro_g2_vp9_dec.c
> @@ -16,8 +16,6 @@
>   #include "hantro_vp9.h"
>   #include "hantro_g2_regs.h"
>   
> -#define G2_ALIGN 16
> -
>   enum hantro_ref_frames {
>   	INTRA_FRAME = 0,
>   	LAST_FRAME = 1,
> @@ -90,22 +88,6 @@ static int start_prepare_run(struct hantro_ctx *ctx, const struct v4l2_ctrl_vp9_
>   	return 0;
>   }
>   
> -static size_t chroma_offset(const struct hantro_ctx *ctx,
> -			    const struct v4l2_ctrl_vp9_frame *dec_params)
> -{
> -	int bytes_per_pixel = dec_params->bit_depth == 8 ? 1 : 2;
> -
> -	return ctx->src_fmt.width * ctx->src_fmt.height * bytes_per_pixel;
> -}
> -
> -static size_t mv_offset(const struct hantro_ctx *ctx,
> -			const struct v4l2_ctrl_vp9_frame *dec_params)
> -{
> -	size_t cr_offset = chroma_offset(ctx, dec_params);
> -
> -	return ALIGN((cr_offset * 3) / 2, G2_ALIGN);
> -}
> -
>   static struct hantro_decoded_buffer *
>   get_ref_buf(struct hantro_ctx *ctx, struct vb2_v4l2_buffer *dst, u64 timestamp)
>   {
> @@ -156,13 +138,13 @@ static void config_output(struct hantro_ctx *ctx,
>   	luma_addr = hantro_get_dec_buf_addr(ctx, &dst->base.vb.vb2_buf);
>   	hantro_write_addr(ctx->dev, G2_OUT_LUMA_ADDR, luma_addr);
>   
> -	chroma_addr = luma_addr + chroma_offset(ctx, dec_params);
> +	chroma_addr = luma_addr + hantro_g2_chroma_offset(ctx);
>   	hantro_write_addr(ctx->dev, G2_OUT_CHROMA_ADDR, chroma_addr);
> -	dst->vp9.chroma_offset = chroma_offset(ctx, dec_params);
> +	dst->vp9.chroma_offset = hantro_g2_chroma_offset(ctx);
>   
> -	mv_addr = luma_addr + mv_offset(ctx, dec_params);
> +	mv_addr = luma_addr + hantro_g2_motion_vectors_offset(ctx);
>   	hantro_write_addr(ctx->dev, G2_OUT_MV_ADDR, mv_addr);
> -	dst->vp9.mv_offset = mv_offset(ctx, dec_params);
> +	dst->vp9.mv_offset = hantro_g2_motion_vectors_offset(ctx);
>   }
>   
>   struct hantro_vp9_ref_reg {
> diff --git a/drivers/media/platform/verisilicon/hantro_hw.h b/drivers/media/platform/verisilicon/hantro_hw.h
> index 292a76ef643e..9aec8a79acdc 100644
> --- a/drivers/media/platform/verisilicon/hantro_hw.h
> +++ b/drivers/media/platform/verisilicon/hantro_hw.h
> @@ -521,6 +521,9 @@ hantro_av1_mv_size(unsigned int width, unsigned int height)
>   	return ALIGN(num_sbs * 384, 16) * 2 + 512;
>   }
>   
> +size_t hantro_g2_chroma_offset(struct hantro_ctx *ctx);
> +size_t hantro_g2_motion_vectors_offset(struct hantro_ctx *ctx);
> +
>   int hantro_g1_mpeg2_dec_run(struct hantro_ctx *ctx);
>   int rockchip_vpu2_mpeg2_dec_run(struct hantro_ctx *ctx);
>   void hantro_mpeg2_dec_copy_qtable(u8 *qtable,


  reply	other threads:[~2023-11-09 14:25 UTC|newest]

Thread overview: 133+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-10-31 16:30 [PATCH v14 00/56] Add DELETE_BUF ioctl Benjamin Gaignard
2023-10-31 16:30 ` [PATCH v14 01/56] media: videobuf2: Rename offset parameter Benjamin Gaignard
2023-11-08 15:11   ` Andrzej Pietrasiewicz
2023-10-31 16:30 ` [PATCH v14 02/56] media: videobuf2: Rework offset 'cookie' encoding pattern Benjamin Gaignard
2023-11-08  6:23   ` Tomasz Figa
2023-11-08 10:14     ` Benjamin Gaignard
2023-11-08 10:31       ` Hans Verkuil
2023-10-31 16:30 ` [PATCH v14 03/56] media: videobuf2: Stop spamming kernel log with all queue counter Benjamin Gaignard
2023-11-08 15:26   ` Andrzej Pietrasiewicz
2023-10-31 16:30 ` [PATCH v14 04/56] media: videobuf2: Use vb2_buffer instead of index Benjamin Gaignard
2023-11-08  8:08   ` Tomasz Figa
2023-11-08 15:52   ` Andrzej Pietrasiewicz
2023-10-31 16:30 ` [PATCH v14 05/56] media: videobuf2: Access vb2_queue bufs array through helper functions Benjamin Gaignard
2023-11-08  8:50   ` Tomasz Figa
2023-11-08 10:24     ` Benjamin Gaignard
2023-11-09  4:27       ` Tomasz Figa
2023-10-31 16:30 ` [PATCH v14 06/56] media: videobuf2: Remove duplicated index vs q->num_buffers check Benjamin Gaignard
2023-11-08 16:46   ` Andrzej Pietrasiewicz
2023-10-31 16:30 ` [PATCH v14 07/56] media: videobuf2: Add helper to get queue number of buffers Benjamin Gaignard
2023-11-08 16:50   ` Andrzej Pietrasiewicz
2023-10-31 16:30 ` [PATCH v14 08/56] media: videobuf2: Use vb2_get_num_buffers() helper Benjamin Gaignard
2023-11-08  9:42   ` Tomasz Figa
2023-11-08 13:22     ` Benjamin Gaignard
2023-11-09  4:36       ` Tomasz Figa
2023-10-31 16:30 ` [PATCH v14 09/56] media: amphion: Use vb2_get_buffer() instead of directly access to buffers array Benjamin Gaignard
2023-11-08 16:55   ` Andrzej Pietrasiewicz
2023-10-31 16:30 ` [PATCH v14 10/56] media: amphion: Stop direct calls to queue num_buffers field Benjamin Gaignard
2023-11-08 16:56   ` Andrzej Pietrasiewicz
2023-10-31 16:30 ` [PATCH v14 11/56] media: mediatek: jpeg: Use vb2_get_buffer() instead of directly access to buffers array Benjamin Gaignard
2023-11-08 17:00   ` Andrzej Pietrasiewicz
2023-10-31 16:30 ` [PATCH v14 12/56] media: mediatek: vdec: Remove useless loop Benjamin Gaignard
2023-11-09  9:15   ` Andrzej Pietrasiewicz
2023-10-31 16:30 ` [PATCH v14 13/56] media: mediatek: vcodec: Stop direct calls to queue num_buffers field Benjamin Gaignard
2023-11-09  9:21   ` Andrzej Pietrasiewicz
2023-11-09  9:23   ` Andrzej Pietrasiewicz
2023-10-31 16:30 ` [PATCH v14 14/56] media: sti: hva: Use vb2_get_buffer() instead of directly access to buffers array Benjamin Gaignard
2023-11-09  9:29   ` Andrzej Pietrasiewicz
2023-10-31 16:30 ` [PATCH v14 15/56] media: visl: " Benjamin Gaignard
2023-11-09  9:38   ` Andrzej Pietrasiewicz
2023-10-31 16:30 ` [PATCH v14 16/56] media: atomisp: " Benjamin Gaignard
2023-10-31 16:30 ` [PATCH v14 17/56] media: atomisp: Stop direct calls to queue num_buffers field Benjamin Gaignard
2023-10-31 16:30 ` [PATCH v14 18/56] media: dvb-core: Use vb2_get_buffer() instead of directly access to buffers array Benjamin Gaignard
2023-11-09  9:46   ` Andrzej Pietrasiewicz
2023-10-31 16:30 ` [PATCH v14 19/56] media: dvb-core: Do not initialize twice queue num_buffer field Benjamin Gaignard
2023-11-09  9:50   ` Andrzej Pietrasiewicz
2023-11-09 10:14     ` Benjamin Gaignard
2023-10-31 16:30 ` [PATCH v14 20/56] media: dvb-frontends: rtl2832: Stop direct calls to queue num_buffers field Benjamin Gaignard
2023-11-09  9:56   ` Andrzej Pietrasiewicz
2023-10-31 16:30 ` [PATCH v14 21/56] media: pci: dt3155: Remove useless check Benjamin Gaignard
2023-11-09 10:03   ` Andrzej Pietrasiewicz
2023-10-31 16:30 ` [PATCH v14 22/56] media: pci: tw686x: Stop direct calls to queue num_buffers field Benjamin Gaignard
2023-11-09 10:05   ` Andrzej Pietrasiewicz
2023-10-31 16:30 ` [PATCH v14 23/56] media: pci: cx18: " Benjamin Gaignard
2023-11-09 10:07   ` Andrzej Pietrasiewicz
2023-10-31 16:30 ` [PATCH v14 24/56] media: pci: netup_unidvb: " Benjamin Gaignard
2023-11-09 10:09   ` Andrzej Pietrasiewicz
2023-10-31 16:30 ` [PATCH v14 25/56] media: pci: tw68: " Benjamin Gaignard
2023-11-09 10:13   ` Andrzej Pietrasiewicz
2023-11-09 10:23     ` Benjamin Gaignard
2023-10-31 16:30 ` [PATCH v14 26/56] media: i2c: video-i2c: " Benjamin Gaignard
2023-11-09 10:18   ` Andrzej Pietrasiewicz
2023-11-09 10:26     ` Benjamin Gaignard
2023-10-31 16:30 ` [PATCH v14 27/56] media: coda: " Benjamin Gaignard
2023-11-09 10:22   ` Andrzej Pietrasiewicz
2023-10-31 16:30 ` [PATCH v14 28/56] media: nxp: " Benjamin Gaignard
2023-11-09 10:26   ` Andrzej Pietrasiewicz
2023-10-31 16:30 ` [PATCH v14 29/56] media: verisilicon: " Benjamin Gaignard
2023-11-09 10:28   ` Andrzej Pietrasiewicz
2023-10-31 16:30 ` [PATCH v14 30/56] media: test-drivers: " Benjamin Gaignard
2023-11-09 11:10   ` Andrzej Pietrasiewicz
2023-10-31 16:30 ` [PATCH v14 31/56] media: imx: " Benjamin Gaignard
2023-11-09 11:12   ` Andrzej Pietrasiewicz
2023-10-31 16:30 ` [PATCH v14 32/56] media: meson: vdec: " Benjamin Gaignard
2023-11-09 11:17   ` Andrzej Pietrasiewicz
2023-10-31 16:30 ` [PATCH v14 33/56] touchscreen: sur40: " Benjamin Gaignard
2023-11-09 11:19   ` Andrzej Pietrasiewicz
2023-10-31 16:30 ` [PATCH v14 34/56] sample: v4l: " Benjamin Gaignard
2023-11-09 11:19   ` Andrzej Pietrasiewicz
2023-10-31 16:30 ` [PATCH v14 35/56] media: cedrus: " Benjamin Gaignard
2023-11-09 11:27   ` Andrzej Pietrasiewicz
2023-11-09 14:14     ` Paul Kocialkowski
2023-11-09 15:48       ` Andrzej Pietrasiewicz
2023-11-09 15:54         ` Benjamin Gaignard
2023-11-09 16:29           ` Paul Kocialkowski
2023-10-31 16:30 ` [PATCH v14 36/56] media: nuvoton: " Benjamin Gaignard
2023-11-09 11:29   ` Andrzej Pietrasiewicz
2023-10-31 16:30 ` [PATCH v14 37/56] media: renesas: " Benjamin Gaignard
2023-11-09 11:30   ` Andrzej Pietrasiewicz
2023-10-31 16:30 ` [PATCH v14 38/56] media: ti: " Benjamin Gaignard
2023-11-09 11:32   ` Andrzej Pietrasiewicz
2023-10-31 16:30 ` [PATCH v14 39/56] media: usb: airspy: " Benjamin Gaignard
2023-11-09 11:33   ` Andrzej Pietrasiewicz
2023-10-31 16:30 ` [PATCH v14 40/56] media: usb: cx231xx: " Benjamin Gaignard
2023-11-09 11:35   ` Andrzej Pietrasiewicz
2023-10-31 16:30 ` [PATCH v14 41/56] media: usb: hackrf: " Benjamin Gaignard
2023-11-09 11:36   ` Andrzej Pietrasiewicz
2023-10-31 16:30 ` [PATCH v14 42/56] media: usb: usbtv: " Benjamin Gaignard
2023-11-09 11:37   ` Andrzej Pietrasiewicz
2023-10-31 16:30 ` [PATCH v14 43/56] media: videobuf2: Be more flexible on the number of queue stored buffers Benjamin Gaignard
2023-11-02  8:17   ` Hans Verkuil
2023-11-06 14:29     ` Benjamin Gaignard
2023-10-31 16:30 ` [PATCH v14 44/56] media: core: Report the maximum possible number of buffers for the queue Benjamin Gaignard
2023-11-09 12:28   ` Andrzej Pietrasiewicz
2023-10-31 16:30 ` [PATCH v14 45/56] media: test-drivers: vivid: Increase max supported buffers for capture queues Benjamin Gaignard
2023-11-09 12:31   ` Andrzej Pietrasiewicz
2023-10-31 16:30 ` [PATCH v14 46/56] media: test-drivers: vicodec: Increase max supported capture queue buffers Benjamin Gaignard
2023-11-09 12:32   ` Andrzej Pietrasiewicz
2023-10-31 16:30 ` [PATCH v14 47/56] media: verisilicon: Refactor postprocessor to store more buffers Benjamin Gaignard
2023-11-09 13:58   ` Andrzej Pietrasiewicz
2023-10-31 16:30 ` [PATCH v14 48/56] media: verisilicon: Store chroma and motion vectors offset Benjamin Gaignard
2023-11-09 14:12   ` Andrzej Pietrasiewicz
2023-10-31 16:30 ` [PATCH v14 49/56] media: verisilicon: g2: Use common helpers to compute chroma and mv offsets Benjamin Gaignard
2023-11-09 14:25   ` Andrzej Pietrasiewicz [this message]
2023-10-31 16:30 ` [PATCH v14 50/56] media: verisilicon: vp9: Allow to change resolution while streaming Benjamin Gaignard
2023-11-09 14:59   ` Andrzej Pietrasiewicz
2023-10-31 16:30 ` [PATCH v14 51/56] media: core: Rework how create_buf index returned value is computed Benjamin Gaignard
2023-10-31 16:31 ` [PATCH v14 52/56] media: core: Add bitmap manage bufs array entries Benjamin Gaignard
2023-11-08 10:44   ` Tomasz Figa
2023-11-08 15:30     ` Benjamin Gaignard
2023-11-09  7:28       ` Tomasz Figa
2023-10-31 16:31 ` [PATCH v14 53/56] media: core: Free range of buffers Benjamin Gaignard
2023-11-09  9:10   ` Tomasz Figa
2023-10-31 16:31 ` [PATCH v14 54/56] media: v4l2: Add DELETE_BUFS ioctl Benjamin Gaignard
2023-11-09  9:30   ` Tomasz Figa
2023-11-09 10:10     ` Benjamin Gaignard
2023-11-10  8:58       ` Tomasz Figa
2023-11-10  9:14         ` Hans Verkuil
2023-11-10  9:19           ` Tomasz Figa
2023-10-31 16:31 ` [PATCH v14 55/56] media: v4l2: Add mem2mem helpers for " Benjamin Gaignard
2023-10-31 16:31 ` [PATCH v14 56/56] media: test-drivers: Use helper " Benjamin Gaignard
2023-11-09  9:43   ` Tomasz Figa
2023-11-09  9:46     ` Benjamin Gaignard
2023-11-09  9:48       ` Tomasz Figa

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=f42c4105-7853-444d-aca2-bf3b34decf57@collabora.com \
    --to=andrzej.p@collabora.com \
    --cc=benjamin.gaignard@collabora.com \
    --cc=ezequiel@vanguardiasur.com.ar \
    --cc=gregkh@linuxfoundation.org \
    --cc=hverkuil-cisco@xs4all.nl \
    --cc=kernel@collabora.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-arm-msm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-media@vger.kernel.org \
    --cc=linux-mediatek@lists.infradead.org \
    --cc=linux-rockchip@lists.infradead.org \
    --cc=linux-staging@lists.linux.dev \
    --cc=m.szyprowski@samsung.com \
    --cc=mchehab@kernel.org \
    --cc=ming.qian@nxp.com \
    --cc=nicolas.dufresne@collabora.com \
    --cc=p.zabel@pengutronix.de \
    --cc=tfiga@chromium.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox