[igt-dev] [PATCH i-g-t 2/2] tests/frontbuffer_tracking: Assert the status of other features on stridechange subtest

José Roberto de Souza jose.souza at intel.com
Thu Mar 28 22:28:27 UTC 2019


As explained in c1edee186d18 ("tests/frontbuffer_tracking: Do not
assert FBC state after a page flip changing stride") after changing
the plane stride there is the possibility that CFB will not be big
enough to keep FBC enabled, that is why do_assertions() is called
with DONT_ASSERT_FEATURE_STATUS but DONT_ASSERT_FEATURE_STATUS is
overkill and will not check the status of the other features like PSR
and DRRS when running combined feature tests and possibly hiding
bugs.

So lets add a new flag that will only not assert FBC.

Cc: Maarten Lankhorst <maarten.lankhorst at linux.intel.com>
Cc: Paulo Zanoni <paulo.r.zanoni at intel.com>
Signed-off-by: José Roberto de Souza <jose.souza at intel.com>
---
 tests/kms_frontbuffer_tracking.c | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/tests/kms_frontbuffer_tracking.c b/tests/kms_frontbuffer_tracking.c
index 087fc473..0dcde097 100644
--- a/tests/kms_frontbuffer_tracking.c
+++ b/tests/kms_frontbuffer_tracking.c
@@ -1527,6 +1527,7 @@ static void do_flush(const struct test_mode *t)
 
 #define DONT_ASSERT_CRC			(1 << 0)
 #define DONT_ASSERT_FEATURE_STATUS	(1 << 1)
+#define DONT_ASSERT_FBC_STATUS		(1 << 12)
 
 #define FBC_ASSERT_FLAGS		(0xF << 2)
 #define ASSERT_FBC_ENABLED		(1 << 2)
@@ -1557,7 +1558,7 @@ static int adjust_assertion_flags(const struct test_mode *t, int flags)
 			flags |= ASSERT_DRRS_HIGH;
 	}
 
-	if ((t->feature & FEATURE_FBC) == 0)
+	if ((t->feature & FEATURE_FBC) == 0 || (flags & DONT_ASSERT_FBC_STATUS))
 		flags &= ~FBC_ASSERT_FLAGS;
 	if ((t->feature & FEATURE_PSR) == 0)
 		flags &= ~PSR_ASSERT_FLAGS;
@@ -2928,7 +2929,7 @@ static void stridechange_subtest(const struct test_mode *t)
 	fill_fb_region(&params->primary, COLOR_PRIM_BG);
 
 	set_mode_for_params(params);
-	do_assertions(DONT_ASSERT_FEATURE_STATUS);
+	do_assertions(DONT_ASSERT_FBC_STATUS);
 
 	/* Go back to the fb that can have FBC. */
 	params->primary.fb = old_fb;
@@ -2938,7 +2939,7 @@ static void stridechange_subtest(const struct test_mode *t)
 	/* This operation is the same as above, but with the planes API. */
 	params->primary.fb = new_fb;
 	set_prim_plane_for_params(params);
-	do_assertions(DONT_ASSERT_FEATURE_STATUS);
+	do_assertions(DONT_ASSERT_FBC_STATUS);
 
 	params->primary.fb = old_fb;
 	set_prim_plane_for_params(params);
@@ -2950,7 +2951,7 @@ static void stridechange_subtest(const struct test_mode *t)
 	 */
 	rc = drmModePageFlip(drm.fd, drm.display.pipes[params->pipe].crtc_id, new_fb->fb_id, 0, NULL);
 	igt_assert(rc == -EINVAL || rc == 0);
-	do_assertions(DONT_ASSERT_FEATURE_STATUS);
+	do_assertions(DONT_ASSERT_FBC_STATUS);
 }
 
 /**
-- 
2.21.0



More information about the igt-dev mailing list