summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>2019-06-17 02:39:21 +0300
committerLaurent Pinchart <laurent.pinchart@ideasonboard.com>2019-06-19 03:13:22 +0300
commit23220321cc14ed92b35536007efda7d49ecea7c3 (patch)
treee3725d02dac3c3448164df848bcddcceb4819cc6
parent6fd25ea0d22564eddb493d9734afcd11ceefd625 (diff)
tests: Add a plane formats test
Add a new test script that tests all formats supported by planes. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Kieran Bingham <kieran.bingham+renesas@ideasonboard.com>
-rwxr-xr-xtests/kms-test-formats.py63
1 files changed, 63 insertions, 0 deletions
diff --git a/tests/kms-test-formats.py b/tests/kms-test-formats.py
new file mode 100755
index 0000000..ae89bb5
--- /dev/null
+++ b/tests/kms-test-formats.py
@@ -0,0 +1,63 @@
+#!/usr/bin/python3
+
+import kmstest
+import pykms
+import time
+
+class FormatsTest(kmstest.KMSTest):
+ """Test all available plane formats."""
+
+ def main(self):
+ self.start("plane formats")
+
+ # Find a CRTC with a connected connector and at least one plane
+ for connector in self.card.connectors:
+ if not connector.connected():
+ self.skip("unconnected connector")
+ continue
+
+ try:
+ mode = connector.get_default_mode()
+ except ValueError:
+ continue
+
+ crtcs = connector.get_possible_crtcs()
+ for crtc in crtcs:
+ if crtc.primary_plane:
+ break
+ else:
+ crtc = None
+
+ if crtc:
+ break
+
+ else:
+ self.skip("no CRTC available with connector")
+ return
+
+ self.logger.log("Testing connector %s, CRTC %u, mode %s" % \
+ (connector.fullname, crtc.id, mode.name))
+
+ for format in crtc.primary_plane.formats:
+ self.logger.log("Testing format %s" % format)
+
+ # Create a frame buffer
+ try:
+ fb = pykms.DumbFramebuffer(self.card, mode.hdisplay, mode.vdisplay, format)
+ except ValueError:
+ continue
+
+ pykms.draw_test_pattern(fb)
+
+ # Set the mode with a primary plane
+ ret = self.atomic_crtc_mode_set(crtc, connector, mode, fb)
+ if ret < 0:
+ self.fail("atomic mode set failed with %d" % ret)
+ continue
+
+ self.run(3)
+
+ self.atomic_crtc_disable(crtc)
+ self.success()
+
+FormatsTest().execute()