summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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()