[igt-dev] [PATCH i-g-t v2] tests/kms_rotation_crc- MPO subtest: Mixing different pixel formats and tiling on different planes.

Sharma, Ananya ananya.sharma at intel.com
Sat Dec 11 17:40:03 UTC 2021


Thank you for the review. I will implement this accordingly.

-----Original Message-----
From: Juha-Pekka Heikkilä <juhapekka.heikkila at gmail.com> 
Sent: Saturday, December 11, 2021 4:00 PM
To: Sharma, Ananya <ananya.sharma at intel.com>
Cc: igt-dev at lists.freedesktop.org; Heikkila, Juha-pekka <juha-pekka.heikkila at intel.com>
Subject: Re: [igt-dev] [PATCH i-g-t v2] tests/kms_rotation_crc- MPO subtest: Mixing different pixel formats and tiling on different planes.

On Tue, Dec 7, 2021 at 2:28 PM Ananya Sharma <ananya.sharma at intel.com> wrote:
>
> Addition of P010 pixel format with already existing pixel formats.
>
> Signed-off-by: Ananya Sharma <ananya.sharma at intel.com>
> ---
>  tests/kms_rotation_crc.c | 10 ++++++++--
>  1 file changed, 8 insertions(+), 2 deletions(-)
>
> diff --git a/tests/kms_rotation_crc.c b/tests/kms_rotation_crc.c index 
> 1497120c..b39ae576 100644
> --- a/tests/kms_rotation_crc.c
> +++ b/tests/kms_rotation_crc.c
> @@ -666,7 +666,7 @@ static void test_multi_plane_rotation(data_t *data, enum pipe pipe)
>          * case with tiling are 2 bpp, 4 bpp and NV12.
>          */
>         static const uint32_t formatlist[] = {DRM_FORMAT_RGB565,
> -               DRM_FORMAT_XRGB8888, DRM_FORMAT_NV12};
> +               DRM_FORMAT_XRGB8888, DRM_FORMAT_NV12, 
> + DRM_FORMAT_P010};
>
>         static struct {
>                 igt_rotation_t rotation; @@ -753,12 +753,17 @@ static 
> void test_multi_plane_rotation(data_t *data, enum pipe pipe)
>                                                  */
>                                                 if (p[0].format != DRM_FORMAT_NV12 &&
>                                                     p[1].format != 
> DRM_FORMAT_NV12 &&
> +                                                   p[0].format != DRM_FORMAT_P010 &&
> +                                                   p[1].format != 
> + DRM_FORMAT_P010 &&

You could replace above with
"!igt_format_is_yuv_semiplanar(p[0].format) && !igt_format_is_yuv_semiplanar(p[1].format)"

>                                                     crclog[ctz(planeconfigs[i].rotation) | (ctz(planeconfigs[j].rotation) << 2)].frame != 0) {
>                                                         retcrc_sw = crclog[ctz(planeconfigs[i].rotation) | (ctz(planeconfigs[j].rotation) << 2)];
>                                                         have_crc = true;
>                                                 } else if (p[0].format == DRM_FORMAT_NV12 &&
>                                                            p[1].format != DRM_FORMAT_NV12 &&
>                                                            
> lastroundjformat != DRM_FORMAT_NV12 &&
> +                                                          p[0].format == DRM_FORMAT_P010 &&
> +                                                          p[1].format != DRM_FORMAT_P010 &&
> +                                                          
> + lastroundjformat !=DRM_FORMAT_P010 &&

Above does not work. p[0].format == DRM_FORMAT_NV12 &&  p[0].format ==
DRM_FORMAT_P010 will never be true. Also this rule is written to take care when p[0] can be NV12 or not NV12 in current and previous round in order to be able to use previous crc here when rotations did stay same and p[0] did stay NV12. Now on previous round p[0] can be also
p010 and p[1] can be NV12 or P010 on that round which need to be checked on. This juggling is because on Intel hw color interpolation with planar formats is not well defined.

>                                                            planeconfigs[i].rotation == lastroundirotation &&
>                                                            planeconfigs[j].rotation == lastroundjrotation) {
>                                                         /* @@ -819,7 
> +824,8 @@ static void test_multi_plane_rotation(data_t *data, enum pipe pipe)
>                                                                                    flipsw,
>                                                                                    
> &retcrc_sw);
>
> -                                                       if (p[0].format != DRM_FORMAT_NV12 && p[1].format != DRM_FORMAT_NV12)
> +                                                       if (p[0].format != DRM_FORMAT_NV12 && p[1].format != DRM_FORMAT_NV12 &&
> +                                                                       
> + p[0].format != DRM_FORMAT_P010 && p[1].format != DRM_FORMAT_P010)

Here also "!igt_format_is_yuv_semiplanar(p[0].format) && !igt_format_is_yuv_semiplanar(p[1].format)"

>                                                                 crclog[ctz(planeconfigs[i].rotation) | (ctz(planeconfigs[j].rotation) << 2)]
>                                                                 = retcrc_sw;
>                                                 }
> --
> 2.25.1
>


More information about the igt-dev mailing list