diff mbox series

media: hantro: HEVC: Fix tile info buffer value computation

Message ID 20220427135517.381959-1-benjamin.gaignard@collabora.com (mailing list archive)
State New, archived
Headers show
Series media: hantro: HEVC: Fix tile info buffer value computation | expand

Commit Message

Benjamin Gaignard April 27, 2022, 1:55 p.m. UTC
Use pps->column_width_minus1[j] + 1 as value for the tile info buffer
instead of pps->column_width_minus1[j + 1].
The patch fix DBLK_E_VIXS_2, DBLK_F_VIXS_2, DBLK_G_VIXS_2,
SAO_B_MediaTek_5, TILES_A_Cisco_2 and TILES_B_Cisco_1 tests in fluster.

Signed-off-by: Benjamin Gaignard <benjamin.gaignard@collabora.com>
---
 drivers/staging/media/hantro/hantro_g2_hevc_dec.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Dan Carpenter April 27, 2022, 2:22 p.m. UTC | #1
On Wed, Apr 27, 2022 at 03:55:17PM +0200, Benjamin Gaignard wrote:
> Use pps->column_width_minus1[j] + 1 as value for the tile info buffer
> instead of pps->column_width_minus1[j + 1].
> The patch fix DBLK_E_VIXS_2, DBLK_F_VIXS_2, DBLK_G_VIXS_2,
> SAO_B_MediaTek_5, TILES_A_Cisco_2 and TILES_B_Cisco_1 tests in fluster.
> 
> Signed-off-by: Benjamin Gaignard <benjamin.gaignard@collabora.com>

Fixes: cb5dd5a0fa51 ("media: hantro: Introduce G2/HEVC decoder")

> ---
>  drivers/staging/media/hantro/hantro_g2_hevc_dec.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/staging/media/hantro/hantro_g2_hevc_dec.c b/drivers/staging/media/hantro/hantro_g2_hevc_dec.c
> index bb512389c1a5..ffeb2fbeefd2 100644
> --- a/drivers/staging/media/hantro/hantro_g2_hevc_dec.c
> +++ b/drivers/staging/media/hantro/hantro_g2_hevc_dec.c
> @@ -74,7 +74,7 @@ static void prepare_tile_info_buffer(struct hantro_ctx *ctx)
>  					no_chroma = 1;
>  				for (j = 0, tmp_w = 0; j < num_tile_cols - 1; j++) {
                                                                        ^^^^
Is this "- 1" still required?  I would have assumed the "- 1" here was
connected with the [j + 1].  What is stored in the last element of the
->column_width_minus1 array?

>  					tmp_w += pps->column_width_minus1[j] + 1;
> -					*p++ = pps->column_width_minus1[j + 1];
                                                                        ^^^^^

> +					*p++ = pps->column_width_minus1[j] + 1;
>  					*p++ = h;
>  					if (i == 0 && h == 1 && ctb_size == 16)
>  						no_chroma = 1;

regards,
dan carpenter
Sebastian Fricke April 27, 2022, 2:46 p.m. UTC | #2
Hey Benjamin,

On 27.04.2022 15:55, Benjamin Gaignard wrote:
>Use pps->column_width_minus1[j] + 1 as value for the tile info buffer
>instead of pps->column_width_minus1[j + 1].
>The patch fix DBLK_E_VIXS_2, DBLK_F_VIXS_2, DBLK_G_VIXS_2,

s/fix/fixes/

Greetings,
Sebastian

>SAO_B_MediaTek_5, TILES_A_Cisco_2 and TILES_B_Cisco_1 tests in fluster.
>
>Signed-off-by: Benjamin Gaignard <benjamin.gaignard@collabora.com>
>---
> drivers/staging/media/hantro/hantro_g2_hevc_dec.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
>diff --git a/drivers/staging/media/hantro/hantro_g2_hevc_dec.c b/drivers/staging/media/hantro/hantro_g2_hevc_dec.c
>index bb512389c1a5..ffeb2fbeefd2 100644
>--- a/drivers/staging/media/hantro/hantro_g2_hevc_dec.c
>+++ b/drivers/staging/media/hantro/hantro_g2_hevc_dec.c
>@@ -74,7 +74,7 @@ static void prepare_tile_info_buffer(struct hantro_ctx *ctx)
> 					no_chroma = 1;
> 				for (j = 0, tmp_w = 0; j < num_tile_cols - 1; j++) {
> 					tmp_w += pps->column_width_minus1[j] + 1;
>-					*p++ = pps->column_width_minus1[j + 1];
>+					*p++ = pps->column_width_minus1[j] + 1;
> 					*p++ = h;
> 					if (i == 0 && h == 1 && ctb_size == 16)
> 						no_chroma = 1;
>-- 
>2.32.0
>
Benjamin Gaignard April 27, 2022, 5:38 p.m. UTC | #3
Le 27/04/2022 à 16:22, Dan Carpenter a écrit :
> On Wed, Apr 27, 2022 at 03:55:17PM +0200, Benjamin Gaignard wrote:
>> Use pps->column_width_minus1[j] + 1 as value for the tile info buffer
>> instead of pps->column_width_minus1[j + 1].
>> The patch fix DBLK_E_VIXS_2, DBLK_F_VIXS_2, DBLK_G_VIXS_2,
>> SAO_B_MediaTek_5, TILES_A_Cisco_2 and TILES_B_Cisco_1 tests in fluster.
>>
>> Signed-off-by: Benjamin Gaignard <benjamin.gaignard@collabora.com>
> Fixes: cb5dd5a0fa51 ("media: hantro: Introduce G2/HEVC decoder")
>
>> ---
>>   drivers/staging/media/hantro/hantro_g2_hevc_dec.c | 2 +-
>>   1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/drivers/staging/media/hantro/hantro_g2_hevc_dec.c b/drivers/staging/media/hantro/hantro_g2_hevc_dec.c
>> index bb512389c1a5..ffeb2fbeefd2 100644
>> --- a/drivers/staging/media/hantro/hantro_g2_hevc_dec.c
>> +++ b/drivers/staging/media/hantro/hantro_g2_hevc_dec.c
>> @@ -74,7 +74,7 @@ static void prepare_tile_info_buffer(struct hantro_ctx *ctx)
>>   					no_chroma = 1;
>>   				for (j = 0, tmp_w = 0; j < num_tile_cols - 1; j++) {
>                                                                          ^^^^
> Is this "- 1" still required?  I would have assumed the "- 1" here was
> connected with the [j + 1].  What is stored in the last element of the
> ->column_width_minus1 array?

No "- 1" comes from the definition of the field in H.265 which is pps->num_tile_columns_minus1
We add 1 to fill the registers so we need the "- 1" in the loop.
Data ordering isn't documented anywhere so that part is directly inspired by
Hantro/G2 proprietary stack.

Regards,
Benjamin

>
>>   					tmp_w += pps->column_width_minus1[j] + 1;
>> -					*p++ = pps->column_width_minus1[j + 1];
>                                                                          ^^^^^
>
>> +					*p++ = pps->column_width_minus1[j] + 1;
>>   					*p++ = h;
>>   					if (i == 0 && h == 1 && ctb_size == 16)
>>   						no_chroma = 1;
> regards,
> dan carpenter
diff mbox series

Patch

diff --git a/drivers/staging/media/hantro/hantro_g2_hevc_dec.c b/drivers/staging/media/hantro/hantro_g2_hevc_dec.c
index bb512389c1a5..ffeb2fbeefd2 100644
--- a/drivers/staging/media/hantro/hantro_g2_hevc_dec.c
+++ b/drivers/staging/media/hantro/hantro_g2_hevc_dec.c
@@ -74,7 +74,7 @@  static void prepare_tile_info_buffer(struct hantro_ctx *ctx)
 					no_chroma = 1;
 				for (j = 0, tmp_w = 0; j < num_tile_cols - 1; j++) {
 					tmp_w += pps->column_width_minus1[j] + 1;
-					*p++ = pps->column_width_minus1[j + 1];
+					*p++ = pps->column_width_minus1[j] + 1;
 					*p++ = h;
 					if (i == 0 && h == 1 && ctb_size == 16)
 						no_chroma = 1;