diff mbox

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

Message ID 1461338176-17711-2-git-send-email-tvrtko.ursulin@linux.intel.com (mailing list archive)
State New, archived
Headers show

Commit Message

Tvrtko Ursulin April 22, 2016, 3:16 p.m. UTC
From: Tvrtko Ursulin <tvrtko.ursulin@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@intel.com>
---
 tests/kms_flip.c | 18 ++++++++++++++----
 1 file changed, 14 insertions(+), 4 deletions(-)

Comments

Daniel Vetter April 25, 2016, 8:54 a.m. UTC | #1
On Fri, Apr 22, 2016 at 04:16:16PM +0100, Tvrtko Ursulin wrote:
> From: Tvrtko Ursulin <tvrtko.ursulin@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@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@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/intel-gfx
diff mbox

Patch

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;
 		}
 	}