[igt-dev] [PATCH i-g-t 2/3] tests/kms_pipe_crc_basic: Add NV12 CRC sanitycheck tests
Sharma, Swati2
swati2.sharma at intel.com
Tue May 16 12:00:33 UTC 2023
On 15-May-23 6:15 PM, Ville Syrjälä wrote:
> On Mon, May 15, 2023 at 05:33:33PM +0530, Swati Sharma wrote:
>> New CRC sanitycheck test cases are added with NV12 format (white
>> and solid rgb).
>
> Why?
As discussed offline, tried fixing pixel-format test working in
simulation https://patchwork.freedesktop.org/patch/537263/
>
>> Existing test case(with format XRGB) is modified to validate CRC
>> with solid rgb in addition to white color fb)
>>
>> Signed-off-by: Swati Sharma <swati2.sharma at intel.com>
>> Signed-off-by: Jeevan B <jeevan.b at intel.com>
>> ---
>> tests/kms_pipe_crc_basic.c | 198 ++++++++++++++++++++++++++++++++++---
>> 1 file changed, 182 insertions(+), 16 deletions(-)
>>
>> diff --git a/tests/kms_pipe_crc_basic.c b/tests/kms_pipe_crc_basic.c
>> index 84c73fd7..a340d5b1 100644
>> --- a/tests/kms_pipe_crc_basic.c
>> +++ b/tests/kms_pipe_crc_basic.c
>> @@ -239,13 +239,15 @@ static void test_read_crc(data_t *data, enum pipe pipe,
>> * CRC-sanity test, to make sure there would be no CRC mismatches
>> *
>> * - Create two framebuffers (FB0 & FB1) with same color info
>> + * with different formats (RGB/NV12)
>> * - Flip FB0 with the Primary plane & collect the CRC as ref CRC.
>> * - Flip FB1 with the Primary plane, collect the CRC & compare with
>> * the ref CRC.
>> *
>> * No CRC mismatch should happen
>> */
>> -static void test_compare_crc(data_t *data, enum pipe pipe, igt_output_t *output)
>> +static void test_compare_crc(data_t *data, enum pipe pipe, igt_output_t *output,
>> + uint32_t format, int color)
>> {
>> igt_display_t *display = &data->display;
>> igt_plane_t *primary;
>> @@ -260,18 +262,60 @@ static void test_compare_crc(data_t *data, enum pipe pipe, igt_output_t *output)
>> mode = igt_output_get_mode(output);
>>
>> /* Create two framebuffers with the same color info. */
>> - igt_create_color_fb(data->drm_fd,
>> - mode->hdisplay, mode->vdisplay,
>> - DRM_FORMAT_XRGB8888,
>> - DRM_FORMAT_MOD_LINEAR,
>> - 1.0, 1.0, 1.0,
>> - &fb0);
>> - igt_create_color_fb(data->drm_fd,
>> - mode->hdisplay, mode->vdisplay,
>> - DRM_FORMAT_XRGB8888,
>> - DRM_FORMAT_MOD_LINEAR,
>> - 1.0, 1.0, 1.0,
>> - &fb1);
>> + switch (color) {
>> + case 1:
>> + igt_create_color_fb(data->drm_fd,
>> + mode->hdisplay, mode->vdisplay,
>> + format, DRM_FORMAT_MOD_LINEAR,
>> + 1.0, 0.0, 0.0,
>> + &fb0);
>> +
>> + igt_create_color_fb(data->drm_fd,
>> + mode->hdisplay, mode->vdisplay,
>> + format, DRM_FORMAT_MOD_LINEAR,
>> + 1.0, 0.0, 0.0,
>> + &fb1);
>> + break;
>> + case 2:
>> + igt_create_color_fb(data->drm_fd,
>> + mode->hdisplay, mode->vdisplay,
>> + format, DRM_FORMAT_MOD_LINEAR,
>> + 0.0, 1.0, 0.0,
>> + &fb0);
>> +
>> + igt_create_color_fb(data->drm_fd,
>> + mode->hdisplay, mode->vdisplay,
>> + format, DRM_FORMAT_MOD_LINEAR,
>> + 0.0, 1.0, 0.0,
>> + &fb1);
>> + break;
>> + case 3:
>> + igt_create_color_fb(data->drm_fd,
>> + mode->hdisplay, mode->vdisplay,
>> + format, DRM_FORMAT_MOD_LINEAR,
>> + 0.0, 0.0, 1.0,
>> + &fb0);
>> +
>> + igt_create_color_fb(data->drm_fd,
>> + mode->hdisplay, mode->vdisplay,
>> + format, DRM_FORMAT_MOD_LINEAR,
>> + 0.0, 0.0, 1.0,
>> + &fb1);
>> + break;
>> + case 0:
>> + default:
>> + igt_create_color_fb(data->drm_fd,
>> + mode->hdisplay, mode->vdisplay,
>> + format, DRM_FORMAT_MOD_LINEAR,
>> + 1.0, 1.0, 1.0,
>> + &fb0);
>> +
>> + igt_create_color_fb(data->drm_fd,
>> + mode->hdisplay, mode->vdisplay,
>> + format, DRM_FORMAT_MOD_LINEAR,
>> + 1.0, 1.0, 1.0,
>> + &fb1);
>> + }
>>
>> /* Flip FB0 with the Primary plane & collect the CRC as ref CRC. */
>> primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
>> @@ -475,8 +519,77 @@ igt_main_args("e", NULL, help_str, opt_handler, NULL)
>> }
>> }
>>
>> - igt_describe("Basic sanity check for CRC mismatches");
>> - igt_subtest_with_dynamic("compare-crc-sanitycheck") {
>> + igt_describe("Basic sanity check for CRC mismatches with XRGB format "
>> + "and white color fb.");
>> + igt_subtest_with_dynamic("compare-crc-sanitycheck-xrgb") {
>> + for_each_pipe_with_single_output(&data.display, pipe, output) {
>> + if (simulation_constraint(pipe))
>> + continue;
>> +
>> + if(!pipe_output_combo_valid(&data.display, pipe, output))
>> + continue;
>> +
>> + igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipe), output->name)
>> + test_compare_crc(&data, pipe, output, DRM_FORMAT_XRGB8888, 0);
>> +
>> + break;
>> + }
>> + }
>> +
>> + igt_describe("Basic sanity check for CRC mismatches with XRGB format "
>> + "and red solid color fb.");
>> + igt_subtest_with_dynamic("compare-crc-sanitycheck-xrgb-red") {
>> + for_each_pipe_with_single_output(&data.display, pipe, output) {
>> + if (simulation_constraint(pipe))
>> + continue;
>> +
>> + if(!pipe_output_combo_valid(&data.display, pipe, output))
>> + continue;
>> +
>> + igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipe), output->name)
>> + test_compare_crc(&data, pipe, output, DRM_FORMAT_XRGB8888, 1);
>> +
>> + break;
>> + }
>> + }
>> +
>> + igt_describe("Basic sanity check for CRC mismatches with XRGB format "
>> + "and green solid color fb.");
>> + igt_subtest_with_dynamic("compare-crc-sanitycheck-xrgb-green") {
>> + for_each_pipe_with_single_output(&data.display, pipe, output) {
>> + if (simulation_constraint(pipe))
>> + continue;
>> +
>> + if(!pipe_output_combo_valid(&data.display, pipe, output))
>> + continue;
>> +
>> + igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipe), output->name)
>> + test_compare_crc(&data, pipe, output, DRM_FORMAT_XRGB8888, 2);
>> +
>> + break;
>> + }
>> + }
>> +
>> + igt_describe("Basic sanity check for CRC mismatches with XRGB format "
>> + "and blue solid color fb.");
>> + igt_subtest_with_dynamic("compare-crc-sanitycheck-xrgb-blue") {
>> + for_each_pipe_with_single_output(&data.display, pipe, output) {
>> + if (simulation_constraint(pipe))
>> + continue;
>> +
>> + if(!pipe_output_combo_valid(&data.display, pipe, output))
>> + continue;
>> +
>> + igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipe), output->name)
>> + test_compare_crc(&data, pipe, output, DRM_FORMAT_XRGB8888, 3);
>> +
>> + break;
>> + }
>> + }
>> +
>> + igt_describe("Basic sanity check for CRC mismatches with NV12 format "
>> + "and white color fb.");
>> + igt_subtest_with_dynamic("compare-crc-sanitycheck-nv12") {
>> for_each_pipe_with_single_output(&data.display, pipe, output) {
>> if (simulation_constraint(pipe))
>> continue;
>> @@ -485,7 +598,60 @@ igt_main_args("e", NULL, help_str, opt_handler, NULL)
>> continue;
>>
>> igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipe), output->name)
>> - test_compare_crc(&data, pipe, output);
>> + test_compare_crc(&data, pipe, output, DRM_FORMAT_NV12, 0);
>> +
>> + break;
>> + }
>> + }
>> +
>> + igt_describe("Basic sanity check for CRC mismatches with NV12 format "
>> + "and red solid color fb.");
>> + igt_subtest_with_dynamic("compare-crc-sanitycheck-nv12-red") {
>> + for_each_pipe_with_single_output(&data.display, pipe, output) {
>> + if (simulation_constraint(pipe))
>> + continue;
>> +
>> + if(!pipe_output_combo_valid(&data.display, pipe, output))
>> + continue;
>> +
>> + igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipe), output->name)
>> + test_compare_crc(&data, pipe, output, DRM_FORMAT_NV12, 1);
>> +
>> + break;
>> + }
>> + }
>> +
>> + igt_describe("Basic sanity check for CRC mismatches with NV12 format "
>> + "and green solid color fb.");
>> + igt_subtest_with_dynamic("compare-crc-sanitycheck-nv12-green") {
>> + for_each_pipe_with_single_output(&data.display, pipe, output) {
>> + if (simulation_constraint(pipe))
>> + continue;
>> +
>> + if(!pipe_output_combo_valid(&data.display, pipe, output))
>> + continue;
>> +
>> + igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipe), output->name)
>> + test_compare_crc(&data, pipe, output, DRM_FORMAT_NV12, 2);
>> +
>> + break;
>> + }
>> + }
>> +
>> + igt_describe("Basic sanity check for CRC mismatches with NV12 format "
>> + "and blue solid color fb.");
>> + igt_subtest_with_dynamic("compare-crc-sanitycheck-nv12-blue") {
>> + for_each_pipe_with_single_output(&data.display, pipe, output) {
>> + if (simulation_constraint(pipe))
>> + continue;
>> +
>> + if(!pipe_output_combo_valid(&data.display, pipe, output))
>> + continue;
>> +
>> + igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipe), output->name)
>> + test_compare_crc(&data, pipe, output, DRM_FORMAT_NV12, 3);
>> +
>> + break;
>> }
>> }
>>
>> --
>> 2.25.1
>
More information about the igt-dev
mailing list