[Intel-gfx] [PATCH i-g-t 2/5] kms_frontbuffer_tracking: Make sink crc mandatory only for PSR.

Rodrigo Vivi rodrigo.vivi at intel.com
Thu Dec 3 08:39:15 PST 2015


Unfortunately Sink CRC is not 100% reliable for all platforms.
So we cannot block FBC tests nor skip them when we are getting
unreliable Sink CRC results, or not getting them at all.

Cc: Paulo Zanoni <paulo.r.zanoni at intel.com>
Signed-off-by: Rodrigo Vivi <rodrigo.vivi at intel.com>
---
 tests/kms_frontbuffer_tracking.c | 13 +++++++++----
 1 file changed, 9 insertions(+), 4 deletions(-)

diff --git a/tests/kms_frontbuffer_tracking.c b/tests/kms_frontbuffer_tracking.c
index c729cee..ddcec75 100644
--- a/tests/kms_frontbuffer_tracking.c
+++ b/tests/kms_frontbuffer_tracking.c
@@ -1570,7 +1570,7 @@ static int adjust_assertion_flags(const struct test_mode *t, int flags)
 	return flags;
 }
 
-#define do_crc_assertions(flags) do {					\
+#define do_crc_assertions(flags, mandatory_sink_crc) do {		\
 	int flags__ = (flags);						\
 	struct both_crcs crc_;						\
 									\
@@ -1582,7 +1582,11 @@ static int adjust_assertion_flags(const struct test_mode *t, int flags)
 									\
 	igt_assert(wanted_crc);						\
 	igt_assert_crc_equal(&crc_.pipe, &wanted_crc->pipe);		\
-	assert_sink_crc_equal(&crc_.sink, &wanted_crc->sink);		\
+	if (mandatory_sink_crc)						\
+		assert_sink_crc_equal(&crc_.sink, &wanted_crc->sink);	\
+	else								\
+		if (!sink_crc_equal(&crc_.sink, &wanted_crc->sink))	\
+			igt_info("Sink CRC differ, but not required\n"); \
 } while (0)
 
 #define do_status_assertions(flags_) do {				\
@@ -1618,12 +1622,13 @@ static int adjust_assertion_flags(const struct test_mode *t, int flags)
 
 #define do_assertions(flags) do {					\
 	int flags_ = adjust_assertion_flags(t, (flags));		\
+	bool mandatory_sink_crc = t->feature & FEATURE_PSR;		\
 									\
 	wait_user(2, "Paused before assertions.");			\
 									\
 	/* Check the CRC to make sure the drawing operations work	\
 	 * immediately, independently of the features being enabled. */	\
-	do_crc_assertions(flags_);					\
+	do_crc_assertions(flags_, mandatory_sink_crc);			\
 									\
 	/* Now we can flush things to make the test faster. */		\
 	do_flush(t);							\
@@ -1636,7 +1641,7 @@ static int adjust_assertion_flags(const struct test_mode *t, int flags)
 	 * would only delay the test suite while adding no value to the	\
 	 * test suite. */						\
 	if (t->screen == SCREEN_PRIM)					\
-		do_crc_assertions(flags_);				\
+		do_crc_assertions(flags_, mandatory_sink_crc);		\
 									\
 	if (fbc.supports_last_action && opt.fbc_check_last_action) {	\
 		if (flags_ & ASSERT_LAST_ACTION_CHANGED)		\
-- 
2.4.3



More information about the Intel-gfx mailing list