[PATCH i-g-t] add tests to check crc for supported formats

Kamil Konieczny kamil.konieczny at linux.intel.com
Tue Jun 18 07:35:38 UTC 2024


Hi Santhosh,
On 2024-06-18 at 10:56:52 +0530, Santhosh Reddy Guddati wrote:

I have two nits, first about subject:

[PATCH i-g-t] add tests to check crc for supported formats

this should be:

[PATCH i-g-t] tests/kms_pipe_crc_basic: Add tests for supported formats

Second nit is about description, write here why you added new
subtests.

Regards,
Kamil

> ---
>  tests/kms_pipe_crc_basic.c | 61 ++++++++++++++++++++++++++++++++++++++
>  1 file changed, 61 insertions(+)
> 
> diff --git a/tests/kms_pipe_crc_basic.c b/tests/kms_pipe_crc_basic.c
> index 0c19745bc..b8a0689e4 100644
> --- a/tests/kms_pipe_crc_basic.c
> +++ b/tests/kms_pipe_crc_basic.c
> @@ -82,6 +82,11 @@
>   *              CRTC does not cause issues.
>   */
>  
> +/**
> + * SUBTEST: compare-crc-sanitycheck-supported-formats
> + * Description: Basic sanity check for CRC mismatches with supported formats.
> + */
> +
>  static bool extended;
>  static enum pipe active_pipes[IGT_MAX_PIPES];
>  static uint32_t last_pipe;
> @@ -357,6 +362,33 @@ static bool pipe_output_combo_valid(igt_display_t *display,
>  
>  data_t data = {0, };
>  
> +/**
> + * @brief Retrieves the supported formats for a given output and pipe.
> + *
> + * This function returns an array of supported formats for a specific output and pipe.
> + *
> + * @param output The output for which to retrieve the supported formats.
> + * @param count  A pointer to store the number of supported formats.
> + * @param pipe   The pipe for which to retrieve the supported formats.
> + *
> + * @return An array of supported formats for the given output and pipe.
> + */
> +static uint32_t* get_supported_formats(igt_output_t *output, uint32_t *count, enum pipe pipe)
> +{
> +	igt_plane_t *primary;
> +	uint32_t *formats = NULL;
> +
> +	igt_output_set_pipe(output, pipe);
> +	primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
> +
> +	*count = primary->format_mod_count;
> +	formats = (uint32_t *) malloc(sizeof(uint32_t) * (*count + 1));
> +	for (uint32_t i = 0; i < *count; i++) {
> +		formats[i] = primary->formats[i];
> +	}
> +	return formats;
> +}
> +
>  static int opt_handler(int opt, int opt_index, void *_data)
>  {
>  	switch (opt) {
> @@ -377,6 +409,8 @@ igt_main_args("e", NULL, help_str, opt_handler, NULL)
>  {
>  	enum pipe pipe;
>  	igt_output_t *output;
> +	uint32_t *supported_formats = NULL;
> +	uint32_t count = 0;
>  	struct {
>  		const char *name;
>  		unsigned flags;
> @@ -498,6 +532,33 @@ igt_main_args("e", NULL, help_str, opt_handler, NULL)
>  		}
>  	}
>  
> +	igt_describe("Basic sanity check for CRC mismatches with supported formats");
> +	igt_subtest_with_dynamic("compare-crc-sanitycheck-supported-formats") {
> +		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;
> +
> +			supported_formats = get_supported_formats(output, &count, pipe);
> +			for (i=0; i<count; i++) {
> +
> +				// Skip the formats that are not supported
> +				if (supported_formats[i] == DRM_FORMAT_NV12 || supported_formats[i] == DRM_FORMAT_XRGB8888 \
> +						|| supported_formats[i] == DRM_FORMAT_C8) {
> +					igt_info("Skipping format "IGT_FORMAT_FMT" \n", IGT_FORMAT_ARGS(supported_formats[i]));
> +					continue;
> +				}
> +
> +				igt_info("Testing format "IGT_FORMAT_FMT" \n", IGT_FORMAT_ARGS(supported_formats[i]));
> +				igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipe), output->name) {
> +					test_compare_crc(&data, pipe, output, supported_formats[i]);
> +				}
> +			}
> +		}
> +	}
> +
>  	igt_fixture {
>  		igt_display_fini(&data.display);
>  		drm_close_driver(data.drm_fd);
> -- 
> 2.43.0
> 


More information about the igt-dev mailing list