<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css" style="display:none;"> P {margin-top:0;margin-bottom:0;} </style>
</head>
<body dir="ltr">
<p style="font-family:Arial;font-size:10pt;color:#0000FF;margin:5pt;" align="Left">
[AMD Official Use Only]<br>
</p>
<br>
<div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div id="appendonsend"></div>
<div style="font-family:Calibri,Arial,Helvetica,sans-serif; font-size:12pt; color:rgb(0,0,0)">
<br>
</div>
<hr tabindex="-1" style="display:inline-block; width:98%">
<div id="divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif" color="#000000" style="font-size:11pt"><b>From:</b> Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl><br>
<b>Sent:</b> 13 April 2022 16:00<br>
<b>To:</b> Hung, Alex <Alex.Hung@amd.com><br>
<b>Cc:</b> Development mailing list for IGT GPU Tools <igt-dev@lists.freedesktop.org>; Mark Yacoub <markyacoub@google.com>; Siqueira, Rodrigo <Rodrigo.Siqueira@amd.com>; Pillai, Aurabindo <Aurabindo.Pillai@amd.com><br>
<b>Subject:</b> Re: [PATCH i-g-t][V2] tests/kms: Skip kms test cases for DCC and DCC_RETILE</font>
<div> </div>
</div>
<div class="BodyFragment"><font size="2"><span style="font-size:11pt">
<div class="PlainText">On Thu, Apr 7, 2022 at 7:42 PM Alex Hung <alex.hung@amd.com> wrote:<br>
><br>
> Skip the KMS test cases for planes that has modifiers with<br>
> DCC and DCC_RETILE on AMDGPU.<br>
><br>
> Current pixel-format and pixel-format-source-clamping subtests do not<br>
> support modifers with DCC or DCC_RETILE in kernel.<br>
><br>
> 1. dcc_formats's cpp[1] is set to 0 and this triggers kernel errors<br>
> "Format requires non-linear modifier for plane 1" because block_size<br>
> (i.e. cpp[1]) == 0. See kernel commits 816853f9dc40 and 8db2dc852941.<br>
<br>
We aren't using a linear modifier here, why would this trigger?</div>
<div class="PlainText"><br>
</div>
<div class="PlainText">The data seems to be all zero, and r->modifier[i] will be zero and equals DRM_FORMAT_MOD_LINEAR (= 0)</div>
<div class="PlainText"><br>
><br>
> 2. the subtests cause kernel's amdgpu_display_verify_sizes to fail<br>
> because they do not provide an extra plane with compression metadata.<br>
> See kernel commit 234055fd9728 for details.<br>
<br>
Can we do something more generic by skipping all modifiers where the<br>
number of planes != the number of planes for the format with a linear<br>
modifier?<br>
<br>
===================<br>
Do you mean something like below:</div>
<div class="PlainText"><br>
</div>
<div class="PlainText">        int nlinear = 0;
<div>        int i;</div>
<div><br>
</div>
<div>        for (i = 0; i < plane->format_mod_count; i++) </div>
<div>                if (plane->modifiers[i] == DRM_FORMAT_MOD_LINEAR)</div>
<div>                        nlinear++;</div>
<div><br>
</div>
<div>        if (plane->format_mod_count != nlinear)</div>
<span>                return true;</span><br>
<br>
This will affect more than DCC.<br>
<br>
><br>
> Signed-off-by: Alex Hung <alex.hung@amd.com><br>
> ---<br>
><br>
> v2: update comments in commit messages<br>
><br>
>  tests/kms_plane.c | 8 ++++++++<br>
>  1 file changed, 8 insertions(+)<br>
><br>
> diff --git a/tests/kms_plane.c b/tests/kms_plane.c<br>
> index 137f23a8..1a71822a 100644<br>
> --- a/tests/kms_plane.c<br>
> +++ b/tests/kms_plane.c<br>
> @@ -1004,6 +1004,14 @@ static bool skip_plane(data_t *data, igt_plane_t *plane)<br>
>  {<br>
>         int index = plane->index;<br>
><br>
> +       for (int i = 0; i < plane->format_mod_count; i++) {<br>
> +               if (AMD_FMT_MOD_GET(DCC, plane->modifiers[i]) ||<br>
> +                   AMD_FMT_MOD_GET(DCC_RETILE, plane->modifiers[i])) {<br>
<br>
This check is only valid if you first check that this is an AMD modifier.</div>
<div class="PlainText"><br>
</div>
<div class="PlainText"><span style="background-color:rgb(255, 255, 255);display:inline !important">===================</span><br>
</div>
<div class="PlainText">Thanks. This can be fixed by the following if it is to be used.</div>
<div class="PlainText"><br>
</div>
<div class="PlainText">        for (i = 0; i < plane->format_mod_count; i++) {
<div>                if (IS_AMD_FMT_MOD(plane->modifiers[i]) &&</div>
<div>                    (AMD_FMT_MOD_GET(DCC, plane->modifiers[i]) ||</div>
<div>                     AMD_FMT_MOD_GET(DCC_RETILE, plane->modifiers[i]))) {</div>
<div>                        igt_debug("Skipping planes with DCC or DCC_RETILE\n");</div>
<div>                        return true;</div>
<div>                }</div>
<span>        }</span><br>
<br>
<br>
> +                       igt_debug("Skipping planes with DCC or DCC_RETILE\n");<br>
> +                       return true;<br>
> +               }<br>
> +       }<br>
> +<br>
>         if (data->extended)<br>
>                 return false;<br>
><br>
> --<br>
> 2.35.1<br>
><br>
</div>
</span></font></div>
</div>
</body>
</html>