linux-media.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* drivers/media/platform/verisilicon/rockchip_vpu981_hw_av1_dec.c:1022:1: warning: the frame size of 1112 bytes is larger than 1024 bytes
@ 2023-07-06 22:40 kernel test robot
  2023-07-07  7:00 ` Benjamin Gaignard
  0 siblings, 1 reply; 2+ messages in thread
From: kernel test robot @ 2023-07-06 22:40 UTC (permalink / raw)
  To: Benjamin Gaignard
  Cc: oe-kbuild-all, linux-kernel, Mauro Carvalho Chehab, linux-media,
	Nicolas Dufresne, Hans Verkuil

Hi Benjamin,

FYI, the error/warning still remains.

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   a452483508d7b70b0f6c69e249ec0b3ea2330b5c
commit: 727a400686a2c0d25015c9e44916a59b72882f83 media: verisilicon: Add Rockchip AV1 decoder
date:   4 weeks ago
config: arm-randconfig-r023-20230707 (https://download.01.org/0day-ci/archive/20230707/202307070653.xxncAC2W-lkp@intel.com/config)
compiler: arm-linux-gnueabi-gcc (GCC) 12.3.0
reproduce: (https://download.01.org/0day-ci/archive/20230707/202307070653.xxncAC2W-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202307070653.xxncAC2W-lkp@intel.com/

All warnings (new ones prefixed by >>):

   drivers/media/platform/verisilicon/rockchip_vpu981_hw_av1_dec.c: In function 'rockchip_vpu981_av1_dec_set_segmentation':
>> drivers/media/platform/verisilicon/rockchip_vpu981_hw_av1_dec.c:1022:1: warning: the frame size of 1112 bytes is larger than 1024 bytes [-Wframe-larger-than=]
    1022 | }
         | ^


vim +1022 drivers/media/platform/verisilicon/rockchip_vpu981_hw_av1_dec.c

   776	
   777	static void rockchip_vpu981_av1_dec_set_segmentation(struct hantro_ctx *ctx)
   778	{
   779		struct hantro_av1_dec_hw_ctx *av1_dec = &ctx->av1_dec;
   780		struct hantro_av1_dec_ctrls *ctrls = &av1_dec->ctrls;
   781		const struct v4l2_ctrl_av1_frame *frame = ctrls->frame;
   782		const struct v4l2_av1_segmentation *seg = &frame->segmentation;
   783		u32 segval[V4L2_AV1_MAX_SEGMENTS][V4L2_AV1_SEG_LVL_MAX] = { 0 };
   784		struct hantro_dev *vpu = ctx->dev;
   785		u8 segsign = 0, preskip_segid = 0, last_active_seg = 0, i, j;
   786	
   787		if (!!(seg->flags & V4L2_AV1_SEGMENTATION_FLAG_ENABLED) &&
   788		    frame->primary_ref_frame < V4L2_AV1_REFS_PER_FRAME) {
   789			int idx = rockchip_vpu981_get_frame_index(ctx, frame->primary_ref_frame);
   790	
   791			if (idx >= 0) {
   792				dma_addr_t luma_addr, mv_addr = 0;
   793				struct hantro_decoded_buffer *seg;
   794				size_t mv_offset = rockchip_vpu981_av1_dec_chroma_size(ctx);
   795	
   796				seg = vb2_to_hantro_decoded_buf(&av1_dec->frame_refs[idx].vb2_ref->vb2_buf);
   797				luma_addr = hantro_get_dec_buf_addr(ctx, &seg->base.vb.vb2_buf);
   798				mv_addr = luma_addr + mv_offset;
   799	
   800				hantro_write_addr(vpu, AV1_SEGMENTATION, mv_addr);
   801				hantro_reg_write(vpu, &av1_use_temporal3_mvs, 1);
   802			}
   803		}
   804	
   805		hantro_reg_write(vpu, &av1_segment_temp_upd_e,
   806				 !!(seg->flags & V4L2_AV1_SEGMENTATION_FLAG_TEMPORAL_UPDATE));
   807		hantro_reg_write(vpu, &av1_segment_upd_e,
   808				 !!(seg->flags & V4L2_AV1_SEGMENTATION_FLAG_UPDATE_MAP));
   809		hantro_reg_write(vpu, &av1_segment_e,
   810				 !!(seg->flags & V4L2_AV1_SEGMENTATION_FLAG_ENABLED));
   811	
   812		hantro_reg_write(vpu, &av1_error_resilient,
   813				 !!(frame->flags & V4L2_AV1_FRAME_FLAG_ERROR_RESILIENT_MODE));
   814	
   815		if (IS_INTRA(frame->frame_type) ||
   816		    !!(frame->flags & V4L2_AV1_FRAME_FLAG_ERROR_RESILIENT_MODE)) {
   817			hantro_reg_write(vpu, &av1_use_temporal3_mvs, 0);
   818		}
   819	
   820		if (seg->flags & V4L2_AV1_SEGMENTATION_FLAG_ENABLED) {
   821			int s;
   822	
   823			for (s = 0; s < V4L2_AV1_MAX_SEGMENTS; s++) {
   824				if (seg->feature_enabled[s] &
   825				    V4L2_AV1_SEGMENT_FEATURE_ENABLED(V4L2_AV1_SEG_LVL_ALT_Q)) {
   826					segval[s][V4L2_AV1_SEG_LVL_ALT_Q] =
   827					    clamp(abs(seg->feature_data[s][V4L2_AV1_SEG_LVL_ALT_Q]),
   828						  0, 255);
   829					segsign |=
   830						(seg->feature_data[s][V4L2_AV1_SEG_LVL_ALT_Q] < 0) << s;
   831				}
   832	
   833				if (seg->feature_enabled[s] &
   834				    V4L2_AV1_SEGMENT_FEATURE_ENABLED(V4L2_AV1_SEG_LVL_ALT_LF_Y_V))
   835					segval[s][V4L2_AV1_SEG_LVL_ALT_LF_Y_V] =
   836						clamp(abs(seg->feature_data[s][V4L2_AV1_SEG_LVL_ALT_LF_Y_V]),
   837						      -63, 63);
   838	
   839				if (seg->feature_enabled[s] &
   840				    V4L2_AV1_SEGMENT_FEATURE_ENABLED(V4L2_AV1_SEG_LVL_ALT_LF_Y_H))
   841					segval[s][V4L2_AV1_SEG_LVL_ALT_LF_Y_H] =
   842					    clamp(abs(seg->feature_data[s][V4L2_AV1_SEG_LVL_ALT_LF_Y_H]),
   843						  -63, 63);
   844	
   845				if (seg->feature_enabled[s] &
   846				    V4L2_AV1_SEGMENT_FEATURE_ENABLED(V4L2_AV1_SEG_LVL_ALT_LF_U))
   847					segval[s][V4L2_AV1_SEG_LVL_ALT_LF_U] =
   848					    clamp(abs(seg->feature_data[s][V4L2_AV1_SEG_LVL_ALT_LF_U]),
   849						  -63, 63);
   850	
   851				if (seg->feature_enabled[s] &
   852				    V4L2_AV1_SEGMENT_FEATURE_ENABLED(V4L2_AV1_SEG_LVL_ALT_LF_V))
   853					segval[s][V4L2_AV1_SEG_LVL_ALT_LF_V] =
   854					    clamp(abs(seg->feature_data[s][V4L2_AV1_SEG_LVL_ALT_LF_V]),
   855						  -63, 63);
   856	
   857				if (frame->frame_type && seg->feature_enabled[s] &
   858				    V4L2_AV1_SEGMENT_FEATURE_ENABLED(V4L2_AV1_SEG_LVL_REF_FRAME))
   859					segval[s][V4L2_AV1_SEG_LVL_REF_FRAME]++;
   860	
   861				if (seg->feature_enabled[s] &
   862				    V4L2_AV1_SEGMENT_FEATURE_ENABLED(V4L2_AV1_SEG_LVL_REF_SKIP))
   863					segval[s][V4L2_AV1_SEG_LVL_REF_SKIP] = 1;
   864	
   865				if (seg->feature_enabled[s] &
   866				    V4L2_AV1_SEGMENT_FEATURE_ENABLED(V4L2_AV1_SEG_LVL_REF_GLOBALMV))
   867					segval[s][V4L2_AV1_SEG_LVL_REF_GLOBALMV] = 1;
   868			}
   869		}
   870	
   871		for (i = 0; i < V4L2_AV1_MAX_SEGMENTS; i++) {
   872			for (j = 0; j < V4L2_AV1_SEG_LVL_MAX; j++) {
   873				if (seg->feature_enabled[i]
   874				    & V4L2_AV1_SEGMENT_FEATURE_ENABLED(j)) {
   875					preskip_segid |= (j >= V4L2_AV1_SEG_LVL_REF_FRAME);
   876					last_active_seg = max(i, last_active_seg);
   877				}
   878			}
   879		}
   880	
   881		hantro_reg_write(vpu, &av1_last_active_seg, last_active_seg);
   882		hantro_reg_write(vpu, &av1_preskip_segid, preskip_segid);
   883	
   884		hantro_reg_write(vpu, &av1_seg_quant_sign, segsign);
   885	
   886		/* Write QP, filter level, ref frame and skip for every segment */
   887		hantro_reg_write(vpu, &av1_quant_seg0,
   888				 segval[0][V4L2_AV1_SEG_LVL_ALT_Q]);
   889		hantro_reg_write(vpu, &av1_filt_level_delta0_seg0,
   890				 segval[0][V4L2_AV1_SEG_LVL_ALT_LF_Y_V]);
   891		hantro_reg_write(vpu, &av1_filt_level_delta1_seg0,
   892				 segval[0][V4L2_AV1_SEG_LVL_ALT_LF_Y_H]);
   893		hantro_reg_write(vpu, &av1_filt_level_delta2_seg0,
   894				 segval[0][V4L2_AV1_SEG_LVL_ALT_LF_U]);
   895		hantro_reg_write(vpu, &av1_filt_level_delta3_seg0,
   896				 segval[0][V4L2_AV1_SEG_LVL_ALT_LF_V]);
   897		hantro_reg_write(vpu, &av1_refpic_seg0,
   898				 segval[0][V4L2_AV1_SEG_LVL_REF_FRAME]);
   899		hantro_reg_write(vpu, &av1_skip_seg0,
   900				 segval[0][V4L2_AV1_SEG_LVL_REF_SKIP]);
   901		hantro_reg_write(vpu, &av1_global_mv_seg0,
   902				 segval[0][V4L2_AV1_SEG_LVL_REF_GLOBALMV]);
   903	
   904		hantro_reg_write(vpu, &av1_quant_seg1,
   905				 segval[1][V4L2_AV1_SEG_LVL_ALT_Q]);
   906		hantro_reg_write(vpu, &av1_filt_level_delta0_seg1,
   907				 segval[1][V4L2_AV1_SEG_LVL_ALT_LF_Y_V]);
   908		hantro_reg_write(vpu, &av1_filt_level_delta1_seg1,
   909				 segval[1][V4L2_AV1_SEG_LVL_ALT_LF_Y_H]);
   910		hantro_reg_write(vpu, &av1_filt_level_delta2_seg1,
   911				 segval[1][V4L2_AV1_SEG_LVL_ALT_LF_U]);
   912		hantro_reg_write(vpu, &av1_filt_level_delta3_seg1,
   913				 segval[1][V4L2_AV1_SEG_LVL_ALT_LF_V]);
   914		hantro_reg_write(vpu, &av1_refpic_seg1,
   915				 segval[1][V4L2_AV1_SEG_LVL_REF_FRAME]);
   916		hantro_reg_write(vpu, &av1_skip_seg1,
   917				 segval[1][V4L2_AV1_SEG_LVL_REF_SKIP]);
   918		hantro_reg_write(vpu, &av1_global_mv_seg1,
   919				 segval[1][V4L2_AV1_SEG_LVL_REF_GLOBALMV]);
   920	
   921		hantro_reg_write(vpu, &av1_quant_seg2,
   922				 segval[2][V4L2_AV1_SEG_LVL_ALT_Q]);
   923		hantro_reg_write(vpu, &av1_filt_level_delta0_seg2,
   924				 segval[2][V4L2_AV1_SEG_LVL_ALT_LF_Y_V]);
   925		hantro_reg_write(vpu, &av1_filt_level_delta1_seg2,
   926				 segval[2][V4L2_AV1_SEG_LVL_ALT_LF_Y_H]);
   927		hantro_reg_write(vpu, &av1_filt_level_delta2_seg2,
   928				 segval[2][V4L2_AV1_SEG_LVL_ALT_LF_U]);
   929		hantro_reg_write(vpu, &av1_filt_level_delta3_seg2,
   930				 segval[2][V4L2_AV1_SEG_LVL_ALT_LF_V]);
   931		hantro_reg_write(vpu, &av1_refpic_seg2,
   932				 segval[2][V4L2_AV1_SEG_LVL_REF_FRAME]);
   933		hantro_reg_write(vpu, &av1_skip_seg2,
   934				 segval[2][V4L2_AV1_SEG_LVL_REF_SKIP]);
   935		hantro_reg_write(vpu, &av1_global_mv_seg2,
   936				 segval[2][V4L2_AV1_SEG_LVL_REF_GLOBALMV]);
   937	
   938		hantro_reg_write(vpu, &av1_quant_seg3,
   939				 segval[3][V4L2_AV1_SEG_LVL_ALT_Q]);
   940		hantro_reg_write(vpu, &av1_filt_level_delta0_seg3,
   941				 segval[3][V4L2_AV1_SEG_LVL_ALT_LF_Y_V]);
   942		hantro_reg_write(vpu, &av1_filt_level_delta1_seg3,
   943				 segval[3][V4L2_AV1_SEG_LVL_ALT_LF_Y_H]);
   944		hantro_reg_write(vpu, &av1_filt_level_delta2_seg3,
   945				 segval[3][V4L2_AV1_SEG_LVL_ALT_LF_U]);
   946		hantro_reg_write(vpu, &av1_filt_level_delta3_seg3,
   947				 segval[3][V4L2_AV1_SEG_LVL_ALT_LF_V]);
   948		hantro_reg_write(vpu, &av1_refpic_seg3,
   949				 segval[3][V4L2_AV1_SEG_LVL_REF_FRAME]);
   950		hantro_reg_write(vpu, &av1_skip_seg3,
   951				 segval[3][V4L2_AV1_SEG_LVL_REF_SKIP]);
   952		hantro_reg_write(vpu, &av1_global_mv_seg3,
   953				 segval[3][V4L2_AV1_SEG_LVL_REF_GLOBALMV]);
   954	
   955		hantro_reg_write(vpu, &av1_quant_seg4,
   956				 segval[4][V4L2_AV1_SEG_LVL_ALT_Q]);
   957		hantro_reg_write(vpu, &av1_filt_level_delta0_seg4,
   958				 segval[4][V4L2_AV1_SEG_LVL_ALT_LF_Y_V]);
   959		hantro_reg_write(vpu, &av1_filt_level_delta1_seg4,
   960				 segval[4][V4L2_AV1_SEG_LVL_ALT_LF_Y_H]);
   961		hantro_reg_write(vpu, &av1_filt_level_delta2_seg4,
   962				 segval[4][V4L2_AV1_SEG_LVL_ALT_LF_U]);
   963		hantro_reg_write(vpu, &av1_filt_level_delta3_seg4,
   964				 segval[4][V4L2_AV1_SEG_LVL_ALT_LF_V]);
   965		hantro_reg_write(vpu, &av1_refpic_seg4,
   966				 segval[4][V4L2_AV1_SEG_LVL_REF_FRAME]);
   967		hantro_reg_write(vpu, &av1_skip_seg4,
   968				 segval[4][V4L2_AV1_SEG_LVL_REF_SKIP]);
   969		hantro_reg_write(vpu, &av1_global_mv_seg4,
   970				 segval[4][V4L2_AV1_SEG_LVL_REF_GLOBALMV]);
   971	
   972		hantro_reg_write(vpu, &av1_quant_seg5,
   973				 segval[5][V4L2_AV1_SEG_LVL_ALT_Q]);
   974		hantro_reg_write(vpu, &av1_filt_level_delta0_seg5,
   975				 segval[5][V4L2_AV1_SEG_LVL_ALT_LF_Y_V]);
   976		hantro_reg_write(vpu, &av1_filt_level_delta1_seg5,
   977				 segval[5][V4L2_AV1_SEG_LVL_ALT_LF_Y_H]);
   978		hantro_reg_write(vpu, &av1_filt_level_delta2_seg5,
   979				 segval[5][V4L2_AV1_SEG_LVL_ALT_LF_U]);
   980		hantro_reg_write(vpu, &av1_filt_level_delta3_seg5,
   981				 segval[5][V4L2_AV1_SEG_LVL_ALT_LF_V]);
   982		hantro_reg_write(vpu, &av1_refpic_seg5,
   983				 segval[5][V4L2_AV1_SEG_LVL_REF_FRAME]);
   984		hantro_reg_write(vpu, &av1_skip_seg5,
   985				 segval[5][V4L2_AV1_SEG_LVL_REF_SKIP]);
   986		hantro_reg_write(vpu, &av1_global_mv_seg5,
   987				 segval[5][V4L2_AV1_SEG_LVL_REF_GLOBALMV]);
   988	
   989		hantro_reg_write(vpu, &av1_quant_seg6,
   990				 segval[6][V4L2_AV1_SEG_LVL_ALT_Q]);
   991		hantro_reg_write(vpu, &av1_filt_level_delta0_seg6,
   992				 segval[6][V4L2_AV1_SEG_LVL_ALT_LF_Y_V]);
   993		hantro_reg_write(vpu, &av1_filt_level_delta1_seg6,
   994				 segval[6][V4L2_AV1_SEG_LVL_ALT_LF_Y_H]);
   995		hantro_reg_write(vpu, &av1_filt_level_delta2_seg6,
   996				 segval[6][V4L2_AV1_SEG_LVL_ALT_LF_U]);
   997		hantro_reg_write(vpu, &av1_filt_level_delta3_seg6,
   998				 segval[6][V4L2_AV1_SEG_LVL_ALT_LF_V]);
   999		hantro_reg_write(vpu, &av1_refpic_seg6,
  1000				 segval[6][V4L2_AV1_SEG_LVL_REF_FRAME]);
  1001		hantro_reg_write(vpu, &av1_skip_seg6,
  1002				 segval[6][V4L2_AV1_SEG_LVL_REF_SKIP]);
  1003		hantro_reg_write(vpu, &av1_global_mv_seg6,
  1004				 segval[6][V4L2_AV1_SEG_LVL_REF_GLOBALMV]);
  1005	
  1006		hantro_reg_write(vpu, &av1_quant_seg7,
  1007				 segval[7][V4L2_AV1_SEG_LVL_ALT_Q]);
  1008		hantro_reg_write(vpu, &av1_filt_level_delta0_seg7,
  1009				 segval[7][V4L2_AV1_SEG_LVL_ALT_LF_Y_V]);
  1010		hantro_reg_write(vpu, &av1_filt_level_delta1_seg7,
  1011				 segval[7][V4L2_AV1_SEG_LVL_ALT_LF_Y_H]);
  1012		hantro_reg_write(vpu, &av1_filt_level_delta2_seg7,
  1013				 segval[7][V4L2_AV1_SEG_LVL_ALT_LF_U]);
  1014		hantro_reg_write(vpu, &av1_filt_level_delta3_seg7,
  1015				 segval[7][V4L2_AV1_SEG_LVL_ALT_LF_V]);
  1016		hantro_reg_write(vpu, &av1_refpic_seg7,
  1017				 segval[7][V4L2_AV1_SEG_LVL_REF_FRAME]);
  1018		hantro_reg_write(vpu, &av1_skip_seg7,
  1019				 segval[7][V4L2_AV1_SEG_LVL_REF_SKIP]);
  1020		hantro_reg_write(vpu, &av1_global_mv_seg7,
  1021				 segval[7][V4L2_AV1_SEG_LVL_REF_GLOBALMV]);
> 1022	}
  1023	

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: drivers/media/platform/verisilicon/rockchip_vpu981_hw_av1_dec.c:1022:1: warning: the frame size of 1112 bytes is larger than 1024 bytes
  2023-07-06 22:40 drivers/media/platform/verisilicon/rockchip_vpu981_hw_av1_dec.c:1022:1: warning: the frame size of 1112 bytes is larger than 1024 bytes kernel test robot
@ 2023-07-07  7:00 ` Benjamin Gaignard
  0 siblings, 0 replies; 2+ messages in thread
From: Benjamin Gaignard @ 2023-07-07  7:00 UTC (permalink / raw)
  To: kernel test robot
  Cc: oe-kbuild-all, linux-kernel, Mauro Carvalho Chehab, linux-media,
	Nicolas Dufresne, Hans Verkuil


Le 07/07/2023 à 00:40, kernel test robot a écrit :
> Hi Benjamin,
>
> FYI, the error/warning still remains.

Arnd have send a patch to fix this kind of problem:
https://lore.kernel.org/lkml/20230616144854.3818934-2-arnd@kernel.org/T/
but I don't see it the tree.
I think that why the warning still remains.

Regards,
Benjamin

>
> tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
> head:   a452483508d7b70b0f6c69e249ec0b3ea2330b5c
> commit: 727a400686a2c0d25015c9e44916a59b72882f83 media: verisilicon: Add Rockchip AV1 decoder
> date:   4 weeks ago
> config: arm-randconfig-r023-20230707 (https://download.01.org/0day-ci/archive/20230707/202307070653.xxncAC2W-lkp@intel.com/config)
> compiler: arm-linux-gnueabi-gcc (GCC) 12.3.0
> reproduce: (https://download.01.org/0day-ci/archive/20230707/202307070653.xxncAC2W-lkp@intel.com/reproduce)
>
> If you fix the issue in a separate patch/commit (i.e. not just a new version of
> the same patch/commit), kindly add following tags
> | Reported-by: kernel test robot <lkp@intel.com>
> | Closes: https://lore.kernel.org/oe-kbuild-all/202307070653.xxncAC2W-lkp@intel.com/
>
> All warnings (new ones prefixed by >>):
>
>     drivers/media/platform/verisilicon/rockchip_vpu981_hw_av1_dec.c: In function 'rockchip_vpu981_av1_dec_set_segmentation':
>>> drivers/media/platform/verisilicon/rockchip_vpu981_hw_av1_dec.c:1022:1: warning: the frame size of 1112 bytes is larger than 1024 bytes [-Wframe-larger-than=]
>      1022 | }
>           | ^
>
>
> vim +1022 drivers/media/platform/verisilicon/rockchip_vpu981_hw_av1_dec.c
>
>     776	
>     777	static void rockchip_vpu981_av1_dec_set_segmentation(struct hantro_ctx *ctx)
>     778	{
>     779		struct hantro_av1_dec_hw_ctx *av1_dec = &ctx->av1_dec;
>     780		struct hantro_av1_dec_ctrls *ctrls = &av1_dec->ctrls;
>     781		const struct v4l2_ctrl_av1_frame *frame = ctrls->frame;
>     782		const struct v4l2_av1_segmentation *seg = &frame->segmentation;
>     783		u32 segval[V4L2_AV1_MAX_SEGMENTS][V4L2_AV1_SEG_LVL_MAX] = { 0 };
>     784		struct hantro_dev *vpu = ctx->dev;
>     785		u8 segsign = 0, preskip_segid = 0, last_active_seg = 0, i, j;
>     786	
>     787		if (!!(seg->flags & V4L2_AV1_SEGMENTATION_FLAG_ENABLED) &&
>     788		    frame->primary_ref_frame < V4L2_AV1_REFS_PER_FRAME) {
>     789			int idx = rockchip_vpu981_get_frame_index(ctx, frame->primary_ref_frame);
>     790	
>     791			if (idx >= 0) {
>     792				dma_addr_t luma_addr, mv_addr = 0;
>     793				struct hantro_decoded_buffer *seg;
>     794				size_t mv_offset = rockchip_vpu981_av1_dec_chroma_size(ctx);
>     795	
>     796				seg = vb2_to_hantro_decoded_buf(&av1_dec->frame_refs[idx].vb2_ref->vb2_buf);
>     797				luma_addr = hantro_get_dec_buf_addr(ctx, &seg->base.vb.vb2_buf);
>     798				mv_addr = luma_addr + mv_offset;
>     799	
>     800				hantro_write_addr(vpu, AV1_SEGMENTATION, mv_addr);
>     801				hantro_reg_write(vpu, &av1_use_temporal3_mvs, 1);
>     802			}
>     803		}
>     804	
>     805		hantro_reg_write(vpu, &av1_segment_temp_upd_e,
>     806				 !!(seg->flags & V4L2_AV1_SEGMENTATION_FLAG_TEMPORAL_UPDATE));
>     807		hantro_reg_write(vpu, &av1_segment_upd_e,
>     808				 !!(seg->flags & V4L2_AV1_SEGMENTATION_FLAG_UPDATE_MAP));
>     809		hantro_reg_write(vpu, &av1_segment_e,
>     810				 !!(seg->flags & V4L2_AV1_SEGMENTATION_FLAG_ENABLED));
>     811	
>     812		hantro_reg_write(vpu, &av1_error_resilient,
>     813				 !!(frame->flags & V4L2_AV1_FRAME_FLAG_ERROR_RESILIENT_MODE));
>     814	
>     815		if (IS_INTRA(frame->frame_type) ||
>     816		    !!(frame->flags & V4L2_AV1_FRAME_FLAG_ERROR_RESILIENT_MODE)) {
>     817			hantro_reg_write(vpu, &av1_use_temporal3_mvs, 0);
>     818		}
>     819	
>     820		if (seg->flags & V4L2_AV1_SEGMENTATION_FLAG_ENABLED) {
>     821			int s;
>     822	
>     823			for (s = 0; s < V4L2_AV1_MAX_SEGMENTS; s++) {
>     824				if (seg->feature_enabled[s] &
>     825				    V4L2_AV1_SEGMENT_FEATURE_ENABLED(V4L2_AV1_SEG_LVL_ALT_Q)) {
>     826					segval[s][V4L2_AV1_SEG_LVL_ALT_Q] =
>     827					    clamp(abs(seg->feature_data[s][V4L2_AV1_SEG_LVL_ALT_Q]),
>     828						  0, 255);
>     829					segsign |=
>     830						(seg->feature_data[s][V4L2_AV1_SEG_LVL_ALT_Q] < 0) << s;
>     831				}
>     832	
>     833				if (seg->feature_enabled[s] &
>     834				    V4L2_AV1_SEGMENT_FEATURE_ENABLED(V4L2_AV1_SEG_LVL_ALT_LF_Y_V))
>     835					segval[s][V4L2_AV1_SEG_LVL_ALT_LF_Y_V] =
>     836						clamp(abs(seg->feature_data[s][V4L2_AV1_SEG_LVL_ALT_LF_Y_V]),
>     837						      -63, 63);
>     838	
>     839				if (seg->feature_enabled[s] &
>     840				    V4L2_AV1_SEGMENT_FEATURE_ENABLED(V4L2_AV1_SEG_LVL_ALT_LF_Y_H))
>     841					segval[s][V4L2_AV1_SEG_LVL_ALT_LF_Y_H] =
>     842					    clamp(abs(seg->feature_data[s][V4L2_AV1_SEG_LVL_ALT_LF_Y_H]),
>     843						  -63, 63);
>     844	
>     845				if (seg->feature_enabled[s] &
>     846				    V4L2_AV1_SEGMENT_FEATURE_ENABLED(V4L2_AV1_SEG_LVL_ALT_LF_U))
>     847					segval[s][V4L2_AV1_SEG_LVL_ALT_LF_U] =
>     848					    clamp(abs(seg->feature_data[s][V4L2_AV1_SEG_LVL_ALT_LF_U]),
>     849						  -63, 63);
>     850	
>     851				if (seg->feature_enabled[s] &
>     852				    V4L2_AV1_SEGMENT_FEATURE_ENABLED(V4L2_AV1_SEG_LVL_ALT_LF_V))
>     853					segval[s][V4L2_AV1_SEG_LVL_ALT_LF_V] =
>     854					    clamp(abs(seg->feature_data[s][V4L2_AV1_SEG_LVL_ALT_LF_V]),
>     855						  -63, 63);
>     856	
>     857				if (frame->frame_type && seg->feature_enabled[s] &
>     858				    V4L2_AV1_SEGMENT_FEATURE_ENABLED(V4L2_AV1_SEG_LVL_REF_FRAME))
>     859					segval[s][V4L2_AV1_SEG_LVL_REF_FRAME]++;
>     860	
>     861				if (seg->feature_enabled[s] &
>     862				    V4L2_AV1_SEGMENT_FEATURE_ENABLED(V4L2_AV1_SEG_LVL_REF_SKIP))
>     863					segval[s][V4L2_AV1_SEG_LVL_REF_SKIP] = 1;
>     864	
>     865				if (seg->feature_enabled[s] &
>     866				    V4L2_AV1_SEGMENT_FEATURE_ENABLED(V4L2_AV1_SEG_LVL_REF_GLOBALMV))
>     867					segval[s][V4L2_AV1_SEG_LVL_REF_GLOBALMV] = 1;
>     868			}
>     869		}
>     870	
>     871		for (i = 0; i < V4L2_AV1_MAX_SEGMENTS; i++) {
>     872			for (j = 0; j < V4L2_AV1_SEG_LVL_MAX; j++) {
>     873				if (seg->feature_enabled[i]
>     874				    & V4L2_AV1_SEGMENT_FEATURE_ENABLED(j)) {
>     875					preskip_segid |= (j >= V4L2_AV1_SEG_LVL_REF_FRAME);
>     876					last_active_seg = max(i, last_active_seg);
>     877				}
>     878			}
>     879		}
>     880	
>     881		hantro_reg_write(vpu, &av1_last_active_seg, last_active_seg);
>     882		hantro_reg_write(vpu, &av1_preskip_segid, preskip_segid);
>     883	
>     884		hantro_reg_write(vpu, &av1_seg_quant_sign, segsign);
>     885	
>     886		/* Write QP, filter level, ref frame and skip for every segment */
>     887		hantro_reg_write(vpu, &av1_quant_seg0,
>     888				 segval[0][V4L2_AV1_SEG_LVL_ALT_Q]);
>     889		hantro_reg_write(vpu, &av1_filt_level_delta0_seg0,
>     890				 segval[0][V4L2_AV1_SEG_LVL_ALT_LF_Y_V]);
>     891		hantro_reg_write(vpu, &av1_filt_level_delta1_seg0,
>     892				 segval[0][V4L2_AV1_SEG_LVL_ALT_LF_Y_H]);
>     893		hantro_reg_write(vpu, &av1_filt_level_delta2_seg0,
>     894				 segval[0][V4L2_AV1_SEG_LVL_ALT_LF_U]);
>     895		hantro_reg_write(vpu, &av1_filt_level_delta3_seg0,
>     896				 segval[0][V4L2_AV1_SEG_LVL_ALT_LF_V]);
>     897		hantro_reg_write(vpu, &av1_refpic_seg0,
>     898				 segval[0][V4L2_AV1_SEG_LVL_REF_FRAME]);
>     899		hantro_reg_write(vpu, &av1_skip_seg0,
>     900				 segval[0][V4L2_AV1_SEG_LVL_REF_SKIP]);
>     901		hantro_reg_write(vpu, &av1_global_mv_seg0,
>     902				 segval[0][V4L2_AV1_SEG_LVL_REF_GLOBALMV]);
>     903	
>     904		hantro_reg_write(vpu, &av1_quant_seg1,
>     905				 segval[1][V4L2_AV1_SEG_LVL_ALT_Q]);
>     906		hantro_reg_write(vpu, &av1_filt_level_delta0_seg1,
>     907				 segval[1][V4L2_AV1_SEG_LVL_ALT_LF_Y_V]);
>     908		hantro_reg_write(vpu, &av1_filt_level_delta1_seg1,
>     909				 segval[1][V4L2_AV1_SEG_LVL_ALT_LF_Y_H]);
>     910		hantro_reg_write(vpu, &av1_filt_level_delta2_seg1,
>     911				 segval[1][V4L2_AV1_SEG_LVL_ALT_LF_U]);
>     912		hantro_reg_write(vpu, &av1_filt_level_delta3_seg1,
>     913				 segval[1][V4L2_AV1_SEG_LVL_ALT_LF_V]);
>     914		hantro_reg_write(vpu, &av1_refpic_seg1,
>     915				 segval[1][V4L2_AV1_SEG_LVL_REF_FRAME]);
>     916		hantro_reg_write(vpu, &av1_skip_seg1,
>     917				 segval[1][V4L2_AV1_SEG_LVL_REF_SKIP]);
>     918		hantro_reg_write(vpu, &av1_global_mv_seg1,
>     919				 segval[1][V4L2_AV1_SEG_LVL_REF_GLOBALMV]);
>     920	
>     921		hantro_reg_write(vpu, &av1_quant_seg2,
>     922				 segval[2][V4L2_AV1_SEG_LVL_ALT_Q]);
>     923		hantro_reg_write(vpu, &av1_filt_level_delta0_seg2,
>     924				 segval[2][V4L2_AV1_SEG_LVL_ALT_LF_Y_V]);
>     925		hantro_reg_write(vpu, &av1_filt_level_delta1_seg2,
>     926				 segval[2][V4L2_AV1_SEG_LVL_ALT_LF_Y_H]);
>     927		hantro_reg_write(vpu, &av1_filt_level_delta2_seg2,
>     928				 segval[2][V4L2_AV1_SEG_LVL_ALT_LF_U]);
>     929		hantro_reg_write(vpu, &av1_filt_level_delta3_seg2,
>     930				 segval[2][V4L2_AV1_SEG_LVL_ALT_LF_V]);
>     931		hantro_reg_write(vpu, &av1_refpic_seg2,
>     932				 segval[2][V4L2_AV1_SEG_LVL_REF_FRAME]);
>     933		hantro_reg_write(vpu, &av1_skip_seg2,
>     934				 segval[2][V4L2_AV1_SEG_LVL_REF_SKIP]);
>     935		hantro_reg_write(vpu, &av1_global_mv_seg2,
>     936				 segval[2][V4L2_AV1_SEG_LVL_REF_GLOBALMV]);
>     937	
>     938		hantro_reg_write(vpu, &av1_quant_seg3,
>     939				 segval[3][V4L2_AV1_SEG_LVL_ALT_Q]);
>     940		hantro_reg_write(vpu, &av1_filt_level_delta0_seg3,
>     941				 segval[3][V4L2_AV1_SEG_LVL_ALT_LF_Y_V]);
>     942		hantro_reg_write(vpu, &av1_filt_level_delta1_seg3,
>     943				 segval[3][V4L2_AV1_SEG_LVL_ALT_LF_Y_H]);
>     944		hantro_reg_write(vpu, &av1_filt_level_delta2_seg3,
>     945				 segval[3][V4L2_AV1_SEG_LVL_ALT_LF_U]);
>     946		hantro_reg_write(vpu, &av1_filt_level_delta3_seg3,
>     947				 segval[3][V4L2_AV1_SEG_LVL_ALT_LF_V]);
>     948		hantro_reg_write(vpu, &av1_refpic_seg3,
>     949				 segval[3][V4L2_AV1_SEG_LVL_REF_FRAME]);
>     950		hantro_reg_write(vpu, &av1_skip_seg3,
>     951				 segval[3][V4L2_AV1_SEG_LVL_REF_SKIP]);
>     952		hantro_reg_write(vpu, &av1_global_mv_seg3,
>     953				 segval[3][V4L2_AV1_SEG_LVL_REF_GLOBALMV]);
>     954	
>     955		hantro_reg_write(vpu, &av1_quant_seg4,
>     956				 segval[4][V4L2_AV1_SEG_LVL_ALT_Q]);
>     957		hantro_reg_write(vpu, &av1_filt_level_delta0_seg4,
>     958				 segval[4][V4L2_AV1_SEG_LVL_ALT_LF_Y_V]);
>     959		hantro_reg_write(vpu, &av1_filt_level_delta1_seg4,
>     960				 segval[4][V4L2_AV1_SEG_LVL_ALT_LF_Y_H]);
>     961		hantro_reg_write(vpu, &av1_filt_level_delta2_seg4,
>     962				 segval[4][V4L2_AV1_SEG_LVL_ALT_LF_U]);
>     963		hantro_reg_write(vpu, &av1_filt_level_delta3_seg4,
>     964				 segval[4][V4L2_AV1_SEG_LVL_ALT_LF_V]);
>     965		hantro_reg_write(vpu, &av1_refpic_seg4,
>     966				 segval[4][V4L2_AV1_SEG_LVL_REF_FRAME]);
>     967		hantro_reg_write(vpu, &av1_skip_seg4,
>     968				 segval[4][V4L2_AV1_SEG_LVL_REF_SKIP]);
>     969		hantro_reg_write(vpu, &av1_global_mv_seg4,
>     970				 segval[4][V4L2_AV1_SEG_LVL_REF_GLOBALMV]);
>     971	
>     972		hantro_reg_write(vpu, &av1_quant_seg5,
>     973				 segval[5][V4L2_AV1_SEG_LVL_ALT_Q]);
>     974		hantro_reg_write(vpu, &av1_filt_level_delta0_seg5,
>     975				 segval[5][V4L2_AV1_SEG_LVL_ALT_LF_Y_V]);
>     976		hantro_reg_write(vpu, &av1_filt_level_delta1_seg5,
>     977				 segval[5][V4L2_AV1_SEG_LVL_ALT_LF_Y_H]);
>     978		hantro_reg_write(vpu, &av1_filt_level_delta2_seg5,
>     979				 segval[5][V4L2_AV1_SEG_LVL_ALT_LF_U]);
>     980		hantro_reg_write(vpu, &av1_filt_level_delta3_seg5,
>     981				 segval[5][V4L2_AV1_SEG_LVL_ALT_LF_V]);
>     982		hantro_reg_write(vpu, &av1_refpic_seg5,
>     983				 segval[5][V4L2_AV1_SEG_LVL_REF_FRAME]);
>     984		hantro_reg_write(vpu, &av1_skip_seg5,
>     985				 segval[5][V4L2_AV1_SEG_LVL_REF_SKIP]);
>     986		hantro_reg_write(vpu, &av1_global_mv_seg5,
>     987				 segval[5][V4L2_AV1_SEG_LVL_REF_GLOBALMV]);
>     988	
>     989		hantro_reg_write(vpu, &av1_quant_seg6,
>     990				 segval[6][V4L2_AV1_SEG_LVL_ALT_Q]);
>     991		hantro_reg_write(vpu, &av1_filt_level_delta0_seg6,
>     992				 segval[6][V4L2_AV1_SEG_LVL_ALT_LF_Y_V]);
>     993		hantro_reg_write(vpu, &av1_filt_level_delta1_seg6,
>     994				 segval[6][V4L2_AV1_SEG_LVL_ALT_LF_Y_H]);
>     995		hantro_reg_write(vpu, &av1_filt_level_delta2_seg6,
>     996				 segval[6][V4L2_AV1_SEG_LVL_ALT_LF_U]);
>     997		hantro_reg_write(vpu, &av1_filt_level_delta3_seg6,
>     998				 segval[6][V4L2_AV1_SEG_LVL_ALT_LF_V]);
>     999		hantro_reg_write(vpu, &av1_refpic_seg6,
>    1000				 segval[6][V4L2_AV1_SEG_LVL_REF_FRAME]);
>    1001		hantro_reg_write(vpu, &av1_skip_seg6,
>    1002				 segval[6][V4L2_AV1_SEG_LVL_REF_SKIP]);
>    1003		hantro_reg_write(vpu, &av1_global_mv_seg6,
>    1004				 segval[6][V4L2_AV1_SEG_LVL_REF_GLOBALMV]);
>    1005	
>    1006		hantro_reg_write(vpu, &av1_quant_seg7,
>    1007				 segval[7][V4L2_AV1_SEG_LVL_ALT_Q]);
>    1008		hantro_reg_write(vpu, &av1_filt_level_delta0_seg7,
>    1009				 segval[7][V4L2_AV1_SEG_LVL_ALT_LF_Y_V]);
>    1010		hantro_reg_write(vpu, &av1_filt_level_delta1_seg7,
>    1011				 segval[7][V4L2_AV1_SEG_LVL_ALT_LF_Y_H]);
>    1012		hantro_reg_write(vpu, &av1_filt_level_delta2_seg7,
>    1013				 segval[7][V4L2_AV1_SEG_LVL_ALT_LF_U]);
>    1014		hantro_reg_write(vpu, &av1_filt_level_delta3_seg7,
>    1015				 segval[7][V4L2_AV1_SEG_LVL_ALT_LF_V]);
>    1016		hantro_reg_write(vpu, &av1_refpic_seg7,
>    1017				 segval[7][V4L2_AV1_SEG_LVL_REF_FRAME]);
>    1018		hantro_reg_write(vpu, &av1_skip_seg7,
>    1019				 segval[7][V4L2_AV1_SEG_LVL_REF_SKIP]);
>    1020		hantro_reg_write(vpu, &av1_global_mv_seg7,
>    1021				 segval[7][V4L2_AV1_SEG_LVL_REF_GLOBALMV]);
>> 1022	}
>    1023	
>

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2023-07-07  7:00 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-07-06 22:40 drivers/media/platform/verisilicon/rockchip_vpu981_hw_av1_dec.c:1022:1: warning: the frame size of 1112 bytes is larger than 1024 bytes kernel test robot
2023-07-07  7:00 ` Benjamin Gaignard

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).