[igt-dev] [PATCH i-g-t] tests/kms_plane: Use solid colors for the cropping tests
Juha-Pekka Heikkila
juhapekka.heikkila at gmail.com
Tue Jun 22 17:30:45 UTC 2021
Does this fix that failure you saw on crop tests?
https://gitlab.freedesktop.org/drm/igt-gpu-tools/-/commit/8598cf551574ceed8d9f032d494c8cefe3f9fda4
I tested increasing height of the fb and saw failure and then saw this
fixed it. It's not pretty fix but I hope it will do the trick all around.
/Juha-Pekka
On 3.6.2021 20.06, Ville Syrjälä wrote:
> On Wed, Jun 02, 2021 at 02:18:32PM +0300, Juha-Pekka Heikkila wrote:
>> On 1.6.2021 19.28, Ville Syrjala wrote:
>>> From: Ville Syrjälä <ville.syrjala at linux.intel.com>
>>>
>>> Something is wrong with the way we render stuff in the crop tests.
>>> The renreded image can be different for different pixel formats,
>>> at least when using fullscreen planes (maybe resolution dependent).
>>> Go back to using just solid colors until someone figures out what's
>>> wrong with the rendering.
>>
>> Is there some ci report where this could be seen? I guess it will fail
>> incorrectly?
>
> Just saw it on some local ctg. I think that one has a 1400x900 (or
> thereabouts) panel.
>
>>
>> /Juha-Pekka
>>
>>>
>>> Signed-off-by: Ville Syrjälä <ville.syrjala at linux.intel.com>
>>> ---
>>> tests/kms_plane.c | 61 ++++++++++++++++++++++++++---------------------
>>> 1 file changed, 34 insertions(+), 27 deletions(-)
>>>
>>> diff --git a/tests/kms_plane.c b/tests/kms_plane.c
>>> index d7cbe8925cd9..ea1118c23769 100644
>>> --- a/tests/kms_plane.c
>>> +++ b/tests/kms_plane.c
>>> @@ -567,7 +567,7 @@ static void capture_crc(data_t *data, unsigned int vblank, igt_crc_t *crc)
>>> crc->frame, vblank);
>>> }
>>>
>>> -static void capture_format_crcs_packed(data_t *data, enum pipe pipe,
>>> +static void capture_format_crcs_single(data_t *data, enum pipe pipe,
>>> igt_plane_t *plane,
>>> uint32_t format, uint64_t modifier,
>>> int width, int height,
>>> @@ -589,13 +589,13 @@ static void capture_format_crcs_packed(data_t *data, enum pipe pipe,
>>> igt_pipe_crc_get_current(data->drm_fd, data->pipe_crc, &crc[0]);
>>> }
>>>
>>> -static void capture_format_crcs_planar(data_t *data, enum pipe pipe,
>>> - igt_plane_t *plane,
>>> - uint32_t format, uint64_t modifier,
>>> - int width, int height,
>>> - enum igt_color_encoding encoding,
>>> - enum igt_color_range range,
>>> - igt_crc_t crc[], struct igt_fb *fb)
>>> +static void capture_format_crcs_multiple(data_t *data, enum pipe pipe,
>>> + igt_plane_t *plane,
>>> + uint32_t format, uint64_t modifier,
>>> + int width, int height,
>>> + enum igt_color_encoding encoding,
>>> + enum igt_color_range range,
>>> + igt_crc_t crc[], struct igt_fb *fb)
>>> {
>>> unsigned int vblank[ARRAY_SIZE(colors_extended)];
>>> struct drm_event_vblank ev;
>>> @@ -712,6 +712,11 @@ restart_round:
>>> capture_crc(data, vblank[i - 1], &crc[i - 1]);
>>> }
>>>
>>> +static bool use_multiple_colors(data_t *data, uint32_t format)
>>> +{
>>> + return data->crop != 0 || igt_format_is_yuv_semiplanar(format);
>>> +}
>>> +
>>> static bool test_format_plane_colors(data_t *data, enum pipe pipe,
>>> igt_plane_t *plane,
>>> uint32_t format, uint64_t modifier,
>>> @@ -726,17 +731,17 @@ static bool test_format_plane_colors(data_t *data, enum pipe pipe,
>>> int crc_mismatch_count = 0;
>>> bool result = true;
>>> int i, total_crcs = 1;
>>> - bool planar = igt_format_is_yuv_semiplanar(format);
>>>
>>> - if (planar) {
>>> - capture_format_crcs_planar(data, pipe, plane, format, modifier,
>>> - width, height, encoding, range, crc,
>>> - fb);
>>> + if (use_multiple_colors(data, format)) {
>>> + capture_format_crcs_multiple(data, pipe, plane, format, modifier,
>>> + width, height, encoding, range, crc,
>>> + fb);
>>> total_crcs = data->num_colors;
>>> - } else
>>> - capture_format_crcs_packed(data, pipe, plane, format, modifier,
>>> + } else {
>>> + capture_format_crcs_single(data, pipe, plane, format, modifier,
>>> width, height, encoding, range, crc,
>>> fb);
>>> + }
>>>
>>> for (i = 0; i < total_crcs; i++) {
>>> if (!igt_check_crc_equal(&crc[i], &ref_crc[i])) {
>>> @@ -826,9 +831,11 @@ static bool test_format_plane_yuv(data_t *data, enum pipe pipe,
>>> return result;
>>> }
>>>
>>> -enum crc_set { PACKED_CRC_SET,
>>> - PLANAR_CRC_SET,
>>> - MAX_CRC_SET };
>>> +enum crc_set {
>>> + SINGLE_CRC_SET,
>>> + MULTIPLE_CRC_SET,
>>> + MAX_CRC_SET,
>>> +};
>>>
>>> struct format_mod {
>>> uint64_t modifier;
>>> @@ -906,22 +913,22 @@ static bool test_format_plane(data_t *data, enum pipe pipe,
>>> igt_remove_fb(data->drm_fd, &test_fb);
>>> }
>>>
>>> - capture_format_crcs_packed(data, pipe, plane, ref.format, ref.modifier,
>>> + capture_format_crcs_single(data, pipe, plane, ref.format, ref.modifier,
>>> width, height, IGT_COLOR_YCBCR_BT709,
>>> IGT_COLOR_YCBCR_LIMITED_RANGE,
>>> - ref_crc[PACKED_CRC_SET], &fb);
>>> + ref_crc[SINGLE_CRC_SET], &fb);
>>>
>>> - capture_format_crcs_planar(data, pipe, plane, ref.format, ref.modifier,
>>> - width, height, IGT_COLOR_YCBCR_BT709,
>>> - IGT_COLOR_YCBCR_LIMITED_RANGE,
>>> - ref_crc[PLANAR_CRC_SET], &fb);
>>> + capture_format_crcs_multiple(data, pipe, plane, ref.format, ref.modifier,
>>> + width, height, IGT_COLOR_YCBCR_BT709,
>>> + IGT_COLOR_YCBCR_LIMITED_RANGE,
>>> + ref_crc[MULTIPLE_CRC_SET], &fb);
>>>
>>> /*
>>> * Make sure we have some difference between the colors. This
>>> * at least avoids claiming success when everything is just
>>> * black all the time (eg. if the plane is never even on).
>>> */
>>> - igt_require(num_unique_crcs(ref_crc[PLANAR_CRC_SET], data->num_colors) > 1);
>>> + igt_require(num_unique_crcs(ref_crc[MULTIPLE_CRC_SET], data->num_colors) > 1);
>>>
>>> for (int i = 0; i < plane->format_mod_count; i++) {
>>> struct format_mod f = {
>>> @@ -958,8 +965,8 @@ static bool test_format_plane(data_t *data, enum pipe pipe,
>>> continue;
>>> }
>>>
>>> - crcset = ref_crc[(igt_format_is_yuv_semiplanar(f.format)
>>> - ? PLANAR_CRC_SET : PACKED_CRC_SET)];
>>> + crcset = ref_crc[use_multiple_colors(data, f.format) ?
>>> + MULTIPLE_CRC_SET : SINGLE_CRC_SET];
>>>
>>> if (igt_format_is_yuv(f.format))
>>> result &= test_format_plane_yuv(data, pipe, plane,
>>>
>
More information about the igt-dev
mailing list