[Intel-gfx] [PATCH i-g-t 2/2] kms_flip: Run basic tests only on one pipe

Daniel Vetter daniel at ffwll.ch
Mon Apr 25 08:54:17 UTC 2016


On Fri, Apr 22, 2016 at 04:16:16PM +0100, Tvrtko Ursulin wrote:
> From: Tvrtko Ursulin <tvrtko.ursulin at intel.com>
> 
> It brings enough value for the basic test set to check
> one connector with one pipe only, rather every connector
> with all possible pipes.
> 
> Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin at intel.com>

Unfortuantely we've broken this a few too many times. I kid you not, but
before this testcase page_flip tended to indeed only work on pipe A. Also
vlv/chv have hilarious "this output only works on pipe C" restrictions.

I think at least one pageflip+vblank ts testcase must run on all pipes to
have full coverage. The others we could reduce indeed.
> ---
>  tests/kms_flip.c | 18 ++++++++++++++----
>  1 file changed, 14 insertions(+), 4 deletions(-)
> 
> diff --git a/tests/kms_flip.c b/tests/kms_flip.c
> index 1e7336e1ba95..992c59b53fb9 100644
> --- a/tests/kms_flip.c
> +++ b/tests/kms_flip.c
> @@ -1283,7 +1283,7 @@ static void free_test_output(struct test_output *o)
>  	}
>  }
>  
> -static void run_test_on_crtc_set(struct test_output *o, int *crtc_idxs,
> +static bool run_test_on_crtc_set(struct test_output *o, int *crtc_idxs,
>  				 int crtc_count, int duration_ms)
>  {
>  	char test_name[128];
> @@ -1296,7 +1296,7 @@ static void run_test_on_crtc_set(struct test_output *o, int *crtc_idxs,
>  	case 1:
>  		connector_find_preferred_mode(o->_connector[0], crtc_idxs[0], o);
>  		if (!o->mode_valid)
> -			return;
> +			return false;
>  		snprintf(test_name, sizeof(test_name),
>  			 "%s on pipe %s, connector %s-%d",
>  			 igt_subtest_name(),
> @@ -1307,7 +1307,7 @@ static void run_test_on_crtc_set(struct test_output *o, int *crtc_idxs,
>  	case 2:
>  		connector_find_compatible_mode(crtc_idxs[0], crtc_idxs[1], o);
>  		if (!o->mode_valid)
> -			return;
> +			return false;
>  		snprintf(test_name, sizeof(test_name),
>  			 "%s on pipe %s:%s, connector %s-%d:%s-%d",
>  			 igt_subtest_name(),
> @@ -1422,6 +1422,8 @@ out:
>  	last_connector = NULL;
>  
>  	free_test_output(o);
> +
> +	return true;
>  }
>  
>  static int run_test(int duration, int flags)
> @@ -1454,6 +1456,9 @@ static int run_test(int duration, int flags)
>  				modes++;
>  
>  			free_test_output(&o);
> +
> +			if ((flags & TEST_BASIC) && modes > 0)
> +				break;
>  		}
>  	}
>  
> @@ -1462,6 +1467,7 @@ static int run_test(int duration, int flags)
>  	duration = max(500, duration);
>  
>  	/* Find any connected displays */
> +	modes = 0;
>  	for (i = 0; i < resources->count_connectors; i++) {
>  		for (n = 0; n < resources->count_crtcs; n++) {
>  			int crtc_idx;
> @@ -1476,7 +1482,11 @@ static int run_test(int duration, int flags)
>  			o.depth = 24;
>  
>  			crtc_idx = n;
> -			run_test_on_crtc_set(&o, &crtc_idx, 1, duration);
> +			if (run_test_on_crtc_set(&o, &crtc_idx, 1, duration))
> +				modes++;
> +
> +			if ((flags & TEST_BASIC) && modes > 0)
> +				break;
>  		}
>  	}
>  
> -- 
> 1.9.1
> 
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/intel-gfx

-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch


More information about the Intel-gfx mailing list