[igt-dev] [PATCH i-g-t][V2] tests/kms: Skip kms test cases for DCC and DCC_RETILE
Hung, Alex
Alex.Hung at amd.com
Thu Apr 14 01:01:32 UTC 2022
[AMD Official Use Only]
________________________________
From: Bas Nieuwenhuizen <bas at basnieuwenhuizen.nl>
Sent: 13 April 2022 16:00
To: Hung, Alex <Alex.Hung at amd.com>
Cc: Development mailing list for IGT GPU Tools <igt-dev at lists.freedesktop.org>; Mark Yacoub <markyacoub at google.com>; Siqueira, Rodrigo <Rodrigo.Siqueira at amd.com>; Pillai, Aurabindo <Aurabindo.Pillai at amd.com>
Subject: Re: [PATCH i-g-t][V2] tests/kms: Skip kms test cases for DCC and DCC_RETILE
On Thu, Apr 7, 2022 at 7:42 PM Alex Hung <alex.hung at amd.com> wrote:
>
> Skip the KMS test cases for planes that has modifiers with
> DCC and DCC_RETILE on AMDGPU.
>
> Current pixel-format and pixel-format-source-clamping subtests do not
> support modifers with DCC or DCC_RETILE in kernel.
>
> 1. dcc_formats's cpp[1] is set to 0 and this triggers kernel errors
> "Format requires non-linear modifier for plane 1" because block_size
> (i.e. cpp[1]) == 0. See kernel commits 816853f9dc40 and 8db2dc852941.
We aren't using a linear modifier here, why would this trigger?
The data seems to be all zero, and r->modifier[i] will be zero and equals DRM_FORMAT_MOD_LINEAR (= 0)
>
> 2. the subtests cause kernel's amdgpu_display_verify_sizes to fail
> because they do not provide an extra plane with compression metadata.
> See kernel commit 234055fd9728 for details.
Can we do something more generic by skipping all modifiers where the
number of planes != the number of planes for the format with a linear
modifier?
===================
Do you mean something like below:
int nlinear = 0;
int i;
for (i = 0; i < plane->format_mod_count; i++)
if (plane->modifiers[i] == DRM_FORMAT_MOD_LINEAR)
nlinear++;
if (plane->format_mod_count != nlinear)
return true;
This will affect more than DCC.
>
> Signed-off-by: Alex Hung <alex.hung at amd.com>
> ---
>
> v2: update comments in commit messages
>
> tests/kms_plane.c | 8 ++++++++
> 1 file changed, 8 insertions(+)
>
> diff --git a/tests/kms_plane.c b/tests/kms_plane.c
> index 137f23a8..1a71822a 100644
> --- a/tests/kms_plane.c
> +++ b/tests/kms_plane.c
> @@ -1004,6 +1004,14 @@ static bool skip_plane(data_t *data, igt_plane_t *plane)
> {
> int index = plane->index;
>
> + for (int i = 0; i < plane->format_mod_count; i++) {
> + if (AMD_FMT_MOD_GET(DCC, plane->modifiers[i]) ||
> + AMD_FMT_MOD_GET(DCC_RETILE, plane->modifiers[i])) {
This check is only valid if you first check that this is an AMD modifier.
===================
Thanks. This can be fixed by the following if it is to be used.
for (i = 0; i < plane->format_mod_count; i++) {
if (IS_AMD_FMT_MOD(plane->modifiers[i]) &&
(AMD_FMT_MOD_GET(DCC, plane->modifiers[i]) ||
AMD_FMT_MOD_GET(DCC_RETILE, plane->modifiers[i]))) {
igt_debug("Skipping planes with DCC or DCC_RETILE\n");
return true;
}
}
> + igt_debug("Skipping planes with DCC or DCC_RETILE\n");
> + return true;
> + }
> + }
> +
> if (data->extended)
> return false;
>
> --
> 2.35.1
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/igt-dev/attachments/20220414/0723f8b7/attachment-0001.htm>
More information about the igt-dev
mailing list