[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