[igt-dev] [PATCH i-g-t v2 1/3] tests/kms_psr2_sf: Move continuous testcase preparation for new tests

Kahola, Mika mika.kahola at intel.com
Wed May 18 12:19:52 UTC 2022


> -----Original Message-----
> From: igt-dev <igt-dev-bounces at lists.freedesktop.org> On Behalf Of Jouni
> Högander
> Sent: Wednesday, May 18, 2022 2:55 PM
> To: igt-dev at lists.freedesktop.org
> Subject: [igt-dev] [PATCH i-g-t v2 1/3] tests/kms_psr2_sf: Move continuous
> testcase preparation for new tests
> 
> Modify current move continuous testcase to ease up adding new testcases.
> 
> Remove exceeding visible area as testcases to perform this are about to be
> added as separate testcases.
> 
> v2: Fix compilation error and warning
> 
> Signed-off-by: Jouni Högander <jouni.hogander at intel.com>

Reviewed-by: Mika Kahola <mika.kahola at intel.com>

> ---
>  tests/i915/kms_psr2_sf.c | 75 ++++++++++++++++++++++++++++------------
>  1 file changed, 53 insertions(+), 22 deletions(-)
> 
> diff --git a/tests/i915/kms_psr2_sf.c b/tests/i915/kms_psr2_sf.c index
> d4cddb62..5024fb14 100644
> --- a/tests/i915/kms_psr2_sf.c
> +++ b/tests/i915/kms_psr2_sf.c
> @@ -53,8 +53,11 @@ enum plane_move_postion {
>  	POS_TOP_RIGHT,
>  	POS_BOTTOM_LEFT,
>  	POS_BOTTOM_RIGHT,
> -	POS_BOTTOM_LEFT_NEGATIVE,
> -	POS_TOP_RIGHT_NEGATIVE,
> +	POS_CENTER,
> +	POS_TOP,
> +	POS_BOTTOM,
> +	POS_LEFT,
> +	POS_RIGHT,
>  };
> 
>  typedef struct {
> @@ -411,11 +414,11 @@ static void plane_move_expected_output(enum
> plane_move_postion pos)
>  	manual(expected);
>  }
> 
> -static void plane_move_continuous_expected_output(enum
> plane_move_postion pos)
> +static void plane_move_continuous_expected_output(data_t *data)
>  {
>  	char expected[128] = {};
> 
> -	switch (pos) {
> +	switch (data->pos) {
>  	case POS_TOP_LEFT:
>  		sprintf(expected,
>  			"screen Green with Blue box on top left corner"); @@ -
> 432,13 +435,20 @@ static void
> plane_move_continuous_expected_output(enum plane_move_postion pos)
>  		sprintf(expected,
>  			"screen Green with Blue box on bottom right corner");
>  		break;
> -	case POS_BOTTOM_LEFT_NEGATIVE:
> -		sprintf(expected,
> -			"screen Green with Blue box on bottom left corner
> (partly exceeding area)");
> +	case POS_CENTER:
> +		sprintf(expected, "screen Green with Blue box on center");
>  		break;
> -	case POS_TOP_RIGHT_NEGATIVE:
> -		sprintf(expected,
> -			"screen Green with Blue box on top right corner (partly
> exceeding area)");
> +	case POS_TOP:
> +		sprintf(expected, "screen Green with Blue box on top");
> +		break;
> +	case POS_BOTTOM:
> +		sprintf(expected, "screen Green with Blue box on bottom");
> +		break;
> +	case POS_LEFT:
> +		sprintf(expected, "screen Green with Blue box on left");
> +		break;
> +	case POS_RIGHT:
> +		sprintf(expected, "screen Green with Blue box on right");
>  		break;
>  	default:
>  		igt_assert(false);
> @@ -466,7 +476,7 @@ static void expected_output(data_t *data)
>  		plane_move_expected_output(data->pos);
>  		break;
>  	case PLANE_MOVE_CONTINUOUS:
> -		plane_move_continuous_expected_output(data->pos);
> +		plane_move_continuous_expected_output(data);
>  		break;
>  	case PLANE_UPDATE:
>  		plane_update_expected_output(data->test_plane_id,
> @@ -530,8 +540,7 @@ static void damaged_plane_move(data_t *data)
> 
>  	expected_output(data);
>  }
> -
> -static void plane_move_continuous(data_t *data)
> +static void get_target_coords(data_t *data, int *x, int *y)
>  {
>  	int target_x, target_y;
> 
> @@ -544,28 +553,50 @@ static void plane_move_continuous(data_t *data)
>  		target_x = data->mode->hdisplay - data->fb_test.width;
>  		target_y = 0;
>  		break;
> -	case POS_TOP_RIGHT_NEGATIVE:
> -		target_x = data->mode->hdisplay - data->fb_test.width;
> -		target_y = -data->fb_test.width / 2;
> -		break;
>  	case POS_BOTTOM_LEFT:
>  		target_x = 0;
>  		target_y = data->mode->vdisplay - data->fb_test.height;
>  		break;
> -	case POS_BOTTOM_LEFT_NEGATIVE:
> -		target_x = -data->fb_test.width / 2;
> -		target_y = data->mode->vdisplay - data->fb_test.height;
> -		break;
>  	case POS_BOTTOM_RIGHT:
>  		target_x = data->mode->hdisplay - data->fb_test.width;
>  		target_y = data->mode->vdisplay - data->fb_test.height;
>  		break;
> +	case POS_CENTER:
> +		target_x = data->mode->hdisplay / 2;
> +		target_y = data->mode->vdisplay / 2;
> +		break;
> +	case POS_BOTTOM:
> +		target_x = data->mode->hdisplay / 2;
> +		target_y = data->mode->vdisplay - data->fb_test.height;
> +		break;
> +	case POS_TOP:
> +		target_x = data->mode->hdisplay / 2;
> +		target_y = 0;
> +		break;
> +	case POS_RIGHT:
> +		target_x = data->mode->hdisplay - data->fb_test.width;
> +		target_y = data->mode->vdisplay / 2;
> +		break;
> +	case POS_LEFT:
> +		target_x = 0;
> +		target_y = data->mode->vdisplay / 2;
> +		break;
>  	default:
>  		igt_assert(false);
>  	}
> 
> +	*x = target_x;
> +	*y = target_y;
> +}
> +
> +static void plane_move_continuous(data_t *data) {
> +	int target_x, target_y;
> +
>  	igt_assert(psr_wait_entry(data->debugfs_fd, PSR_MODE_2));
> 
> +	get_target_coords(data, &target_x, &target_y);
> +
>  	while (data->cur_x != target_x || data->cur_y != target_y) {
>  		if (data->cur_x < target_x)
>  			data->cur_x += min(target_x - data->cur_x, 20); @@ -
> 650,7 +681,7 @@ static void run(data_t *data)
>  		 * over iterations.
>  		 */
>  		data->cur_x = data->cur_y = 0;
> -		for (i = POS_TOP_LEFT; i <= POS_TOP_RIGHT_NEGATIVE; i++) {
> +		for (i = POS_TOP_LEFT; i <= POS_RIGHT; i++) {
>  			data->pos = i;
>  			plane_move_continuous(data);
>  		}
> --
> 2.25.1



More information about the igt-dev mailing list