[igt-dev] [PATCH i-g-t 2/4] tests/kms_ccs: separate ccs modifiers to separate subtests

Imre Deak imre.deak at intel.com
Fri Jun 18 13:20:11 UTC 2021


On Tue, Jun 15, 2021 at 07:00:20PM +0300, Juha-Pekka Heikkila wrote:
> Current kms_ccs test is not revealing if some ccs modifier fails
> as long as there's at least one modifier not failing. Separate all
> ccs modifiers onto their own tests making testing individual ccs
> modifiers easier and not hiding failures.
> 
> Signed-off-by: Juha-Pekka Heikkila <juhapekka.heikkila at gmail.com>

Reviewed-by: Imre Deak <imre.deak at intel.com>

One nit below:

> ---
>  tests/kms_ccs.c | 156 +++++++++++++++++++++---------------------------
>  1 file changed, 67 insertions(+), 89 deletions(-)
> 
> diff --git a/tests/kms_ccs.c b/tests/kms_ccs.c
> index a3eac1f8f..62850c1b2 100644
> --- a/tests/kms_ccs.c
> +++ b/tests/kms_ccs.c
> @@ -41,6 +41,7 @@ enum test_flags {
>  	TEST_BAD_CCS_HANDLE		= 1 << 6,
>  	TEST_BAD_AUX_STRIDE		= 1 << 7,
>  	TEST_RANDOM			= 1 << 8,
> +	TEST_ALL_PLANES			= 1 << 9,
>  };
>  
>  #define TEST_FAIL_ON_ADDFB2 \
> @@ -92,11 +93,11 @@ static const struct {
>  	uint64_t modifier;
>  	const char *str;
>  } ccs_modifiers[] = {
> -	{LOCAL_I915_FORMAT_MOD_Y_TILED_CCS, "LOCAL_I915_FORMAT_MOD_Y_TILED_CCS"},
> -	{LOCAL_I915_FORMAT_MOD_Yf_TILED_CCS, "LOCAL_I915_FORMAT_MOD_Yf_TILED_CCS"},
> -	{LOCAL_I915_FORMAT_MOD_Y_TILED_GEN12_RC_CCS, "LOCAL_I915_FORMAT_MOD_Y_TILED_GEN12_RC_CCS"},
> -	{LOCAL_I915_FORMAT_MOD_Y_TILED_GEN12_RC_CCS_CC, "LOCAL_I915_FORMAT_MOD_Y_TILED_GEN12_RC_CCS_CC"},
> -	{LOCAL_I915_FORMAT_MOD_Y_TILED_GEN12_MC_CCS, "LOCAL_I915_FORMAT_MOD_Y_TILED_GEN12_MC_CCS"},
> +	{LOCAL_I915_FORMAT_MOD_Y_TILED_CCS, "y_tiled_ccs"},
> +	{LOCAL_I915_FORMAT_MOD_Yf_TILED_CCS, "yf_tiled_ccs"},
> +	{LOCAL_I915_FORMAT_MOD_Y_TILED_GEN12_RC_CCS, "y_tiled_gen12_rc_ccs"},
> +	{LOCAL_I915_FORMAT_MOD_Y_TILED_GEN12_RC_CCS_CC, "y_tiled_gen12_rc_ccs_cc"},
> +	{LOCAL_I915_FORMAT_MOD_Y_TILED_GEN12_MC_CCS, "y_tiled_gen12_mc_ccs"},
>  };
>  
>  static bool check_ccs_planes;
> @@ -507,37 +508,53 @@ static int test_ccs(data_t *data)
>  	return valid_tests;
>  }
>  
> -static int __test_output(data_t *data)
> +static void test_output(data_t *data, const char* testformatstring)

Just const char *test_name ?

>  {
> -	igt_display_t *display = &data->display;
> -	int i, valid_tests = 0;
> -
> -	data->output = igt_get_single_output_for_pipe(display, data->pipe);
> -	igt_require(data->output);
> -
> -	igt_output_set_pipe(data->output, data->pipe);
> -
> -	for (i = 0; i < ARRAY_SIZE(ccs_modifiers); i++) {
> -		int j;
> +	igt_fixture {
> +		data->output = igt_get_single_output_for_pipe(&data->display,
> +							      data->pipe);
> +		igt_output_set_pipe(data->output, data->pipe);
> +	}
>  
> +	for (int i = 0; i < ARRAY_SIZE(ccs_modifiers); i++) {
>  		data->ccs_modifier = ccs_modifiers[i].modifier;
> -		igt_debug("Modifier in use: %s\n", ccs_modifiers[i].str);
> -		for (j = 0; j < ARRAY_SIZE(formats); j++) {
> -			data->format = formats[j];
> -			valid_tests += test_ccs(data);
> +
> +		igt_subtest_f("pipe-%s-%s-%s", kmstest_pipe_name(data->pipe),
> +			      testformatstring, ccs_modifiers[i].str ) {
> +			int valid_tests = 0;
> +			igt_require(data->output);
> +
> +			if (data->flags == TEST_RANDOM)
> +				igt_info("Testing with seed %d\n", data->seed);
> +
> +			if (data->flags & TEST_ALL_PLANES) {
> +				igt_display_require_output_on_pipe(&data->display, data->pipe);
> +
> +				for_each_plane_on_pipe(&data->display, data->pipe, data->plane) {
> +					for (int j = 0; j < ARRAY_SIZE(formats); j++) {
> +						data->format = formats[j];
> +						valid_tests += test_ccs(data);
> +					}
> +				}
> +			} else {
> +				for (int j = 0; j < ARRAY_SIZE(formats); j++) {
> +					data->format = formats[j];
> +					valid_tests += test_ccs(data);
> +				}
> +			}
> +			igt_require_f(valid_tests > 0,
> +				      "no valid tests for %s on pipe %s\n",
> +				      ccs_modifiers[i].str,
> +				      kmstest_pipe_name(data->pipe));
>  		}
>  	}
>  
> -	igt_output_set_pipe(data->output, PIPE_NONE);
> -	igt_display_commit2(display, display->is_atomic ? COMMIT_ATOMIC : COMMIT_LEGACY);
> -
> -	return valid_tests;
> -}
> -
> -static void test_output(data_t *data)
> -{
> -	int valid_tests = __test_output(data);
> -	igt_require_f(valid_tests > 0, "CCS not supported, skipping\n");
> +	igt_fixture {
> +		igt_output_set_pipe(data->output, PIPE_NONE);
> +		igt_display_commit2(&data->display, data->display.is_atomic ?
> +				    COMMIT_ATOMIC : COMMIT_LEGACY);
> +		data->plane = NULL;
> +	}
>  }
>  
>  static int opt_handler(int opt, int opt_index, void *opt_data)
> @@ -570,6 +587,22 @@ igt_main_args("cs:", NULL, help_str, opt_handler, &data)
>  {
>  	enum pipe pipe;
>  
> +	const struct {
> +		const enum test_flags	flags;
> +		const char		*testname;
> +		const char		*description;
> +	} tests[] = {
> +		{TEST_BAD_PIXEL_FORMAT, "bad-pixel-format", "Test bad pixel format with given CCS modifier"},
> +		{TEST_BAD_ROTATION_90, "bad-rotation-90", "Test 90 degree rotation with given CCS modifier"},
> +		{TEST_CRC, "crc-primary-basic", "Test primary plane CRC compatibility with given CCS modifier"},
> +		{TEST_CRC | TEST_ROTATE_180, "crc-primary-rotation-180", "Test 180 degree rotation with given CCS modifier"},
> +		{TEST_RANDOM, "random-ccs-data", "Test random CCS data"},
> +		{TEST_NO_AUX_BUFFER, "missing-ccs-buffer", "Test missing CCS buffer with given CCS modifier"},
> +		{TEST_BAD_CCS_HANDLE, "ccs-on-another-bo", "Test CCS with different BO with given modifier"},
> +		{TEST_BAD_AUX_STRIDE, "bad-aux-stride", "Test with bad AUX stride with given CCS modifier"},
> +		{TEST_CRC | TEST_ALL_PLANES, "crc-sprite-planes-basic", "Test sprite plane CRC compatibility with given CCS modifier"},
> +	};
> +
>  	igt_fixture {
>  		data.drm_fd = drm_open_driver_master(DRIVER_INTEL);
>  
> @@ -584,68 +617,13 @@ igt_main_args("cs:", NULL, help_str, opt_handler, &data)
>  	}
>  
>  	for_each_pipe_static(pipe) {
> -		const char *pipe_name = kmstest_pipe_name(pipe);
> -
>  		data.pipe = pipe;
>  
> -		data.flags = TEST_BAD_PIXEL_FORMAT;
> -		igt_describe("Test bad pixel format with given CCS modifier");
> -		igt_subtest_f("pipe-%s-bad-pixel-format", pipe_name)
> -			test_output(&data);
> -
> -		data.flags = TEST_BAD_ROTATION_90;
> -		igt_describe("Test 90 degree rotation with given CCS modifier");
> -		igt_subtest_f("pipe-%s-bad-rotation-90", pipe_name)
> -			test_output(&data);
> -
> -		data.flags = TEST_CRC;
> -		igt_describe("Test primary plane CRC compatibility with given CCS modifier");
> -		igt_subtest_f("pipe-%s-crc-primary-basic", pipe_name)
> -			test_output(&data);
> -
> -		data.flags = TEST_CRC | TEST_ROTATE_180;
> -		igt_describe("Test 180 degree rotation with given CCS modifier");
> -		igt_subtest_f("pipe-%s-crc-primary-rotation-180", pipe_name)
> -			test_output(&data);
> -
> -		data.flags = TEST_CRC;
> -		igt_describe("Test sprite plane CRC compatibility with given CCS modifier");
> -		igt_subtest_f("pipe-%s-crc-sprite-planes-basic", pipe_name) {
> -			int valid_tests = 0;
> -
> -			igt_display_require_output_on_pipe(&data.display, data.pipe);
> -
> -			for_each_plane_on_pipe(&data.display, data.pipe, data.plane) {
> -				valid_tests += __test_output(&data);
> -			}
> -
> -			igt_require_f(valid_tests > 0,
> -				      "CCS not supported, skipping\n");
> -		}
> -
> -		data.plane = NULL;
> -
> -		data.flags = TEST_RANDOM;
> -		igt_describe("Test random CCS data");
> -		igt_subtest_f("pipe-%s-random-ccs-data", pipe_name) {
> -			igt_info("Testing with seed %d\n", data.seed);
> -			test_output(&data);
> +		for (int c = 0; c < ARRAY_SIZE(tests); c++) {
> +			data.flags = tests[c].flags;
> +			igt_describe(tests[c].description);
> +			test_output(&data, tests[c].testname);
>  		}
> -
> -		data.flags = TEST_NO_AUX_BUFFER;
> -		igt_describe("Test missing CCS buffer with given CCS modifier");
> -		igt_subtest_f("pipe-%s-missing-ccs-buffer", pipe_name)
> -			test_output(&data);
> -
> -		data.flags = TEST_BAD_CCS_HANDLE;
> -		igt_describe("Test CCS with different BO with given modifier");
> -		igt_subtest_f("pipe-%s-ccs-on-another-bo", pipe_name)
> -			test_output(&data);
> -
> -		data.flags = TEST_BAD_AUX_STRIDE;
> -		igt_describe("Test with bad AUX stride with given CCS modifier");
> -		igt_subtest_f("pipe-%s-bad-aux-stride", pipe_name)
> -			test_output(&data);
>  	}
>  
>  	igt_fixture
> -- 
> 2.28.0
> 
> _______________________________________________
> igt-dev mailing list
> igt-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/igt-dev


More information about the igt-dev mailing list