add testmodes.py
authorTomi Valkeinen <tomi.valkeinen@ti.com>
Tue, 24 Sep 2019 09:52:05 +0000 (12:52 +0300)
committerTomi Valkeinen <tomi.valkeinen@ti.com>
Wed, 25 Sep 2019 11:53:28 +0000 (14:53 +0300)
Add testmodes.py which goes through all videomodes from a connector one
by one.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
py/tests/testmodes.py [new file with mode: 0755]

diff --git a/py/tests/testmodes.py b/py/tests/testmodes.py
new file mode 100755 (executable)
index 0000000..0508f31
--- /dev/null
@@ -0,0 +1,47 @@
+#!/usr/bin/python3
+
+import sys
+import pykms
+import argparse
+
+parser = argparse.ArgumentParser()
+parser.add_argument("-c", "--connector", default="")
+args = parser.parse_args()
+
+card = pykms.Card()
+
+res = pykms.ResourceManager(card)
+conn = res.reserve_connector(args.connector)
+crtc = res.reserve_crtc(conn)
+plane = res.reserve_generic_plane(crtc)
+
+card.disable_planes()
+
+modes = conn.get_modes()
+
+def even(i):
+       return i & ~1
+
+for mode in modes:
+       long_str = mode.to_string_long()
+       short_str = mode.to_string_short()
+
+       print(long_str)
+
+       modeb = mode.to_blob(card)
+
+       fb = pykms.DumbFramebuffer(card, mode.hdisplay, mode.vdisplay, "XR24");
+       pykms.draw_test_pattern(fb);
+       pykms.draw_text(fb, even((fb.width // 2) - (8 * len(short_str)) // 2), 4, short_str, pykms.white)
+
+       req = pykms.AtomicReq(card)
+
+       req.add_connector(conn, crtc)
+       req.add_crtc(crtc, modeb)
+       req.add_plane(plane, fb, crtc, dst=(0, 0, mode.hdisplay, mode.vdisplay))
+
+       req.commit_sync(allow_modeset = True)
+
+       input("press enter to show next videomode\n")
+
+print("done")