[igt-dev] [PATCH i-g-t 2/3] tests/kms_pipe_crc_basic: Add NV12 CRC sanitycheck tests

Ville Syrjälä ville.syrjala at linux.intel.com
Mon May 15 12:45:52 UTC 2023


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?

> 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

-- 
Ville Syrjälä
Intel


More information about the igt-dev mailing list