xref: /aosp_15_r20/external/libkmsxx/py/tests/testmodes.py (revision f0687c8a10b3e371dbe09214db6664e37c283cca)
1*f0687c8aSRaman Tenneti#!/usr/bin/python3
2*f0687c8aSRaman Tenneti
3*f0687c8aSRaman Tennetiimport sys
4*f0687c8aSRaman Tennetiimport pykms
5*f0687c8aSRaman Tennetiimport argparse
6*f0687c8aSRaman Tenneti
7*f0687c8aSRaman Tennetiparser = argparse.ArgumentParser()
8*f0687c8aSRaman Tennetiparser.add_argument("-c", "--connector", default="")
9*f0687c8aSRaman Tennetiargs = parser.parse_args()
10*f0687c8aSRaman Tenneti
11*f0687c8aSRaman Tenneticard = pykms.Card()
12*f0687c8aSRaman Tenneti
13*f0687c8aSRaman Tennetires = pykms.ResourceManager(card)
14*f0687c8aSRaman Tenneticonn = res.reserve_connector(args.connector)
15*f0687c8aSRaman Tenneticrtc = res.reserve_crtc(conn)
16*f0687c8aSRaman Tennetiplane = res.reserve_generic_plane(crtc)
17*f0687c8aSRaman Tenneti
18*f0687c8aSRaman Tenneticard.disable_planes()
19*f0687c8aSRaman Tenneti
20*f0687c8aSRaman Tennetimodes = conn.get_modes()
21*f0687c8aSRaman Tenneti
22*f0687c8aSRaman Tennetidef even(i):
23*f0687c8aSRaman Tenneti	return i & ~1
24*f0687c8aSRaman Tenneti
25*f0687c8aSRaman Tennetifor mode in modes:
26*f0687c8aSRaman Tenneti	long_str = mode.to_string_long()
27*f0687c8aSRaman Tenneti	short_str = mode.to_string_short()
28*f0687c8aSRaman Tenneti
29*f0687c8aSRaman Tenneti	print(long_str)
30*f0687c8aSRaman Tenneti
31*f0687c8aSRaman Tenneti	modeb = mode.to_blob(card)
32*f0687c8aSRaman Tenneti
33*f0687c8aSRaman Tenneti	fb = pykms.DumbFramebuffer(card, mode.hdisplay, mode.vdisplay, "XR24");
34*f0687c8aSRaman Tenneti	pykms.draw_test_pattern(fb);
35*f0687c8aSRaman Tenneti	pykms.draw_text(fb, even((fb.width // 2) - (8 * len(short_str)) // 2), 4, short_str, pykms.white)
36*f0687c8aSRaman Tenneti
37*f0687c8aSRaman Tenneti	req = pykms.AtomicReq(card)
38*f0687c8aSRaman Tenneti
39*f0687c8aSRaman Tenneti	req.add_connector(conn, crtc)
40*f0687c8aSRaman Tenneti	req.add_crtc(crtc, modeb)
41*f0687c8aSRaman Tenneti	req.add_plane(plane, fb, crtc, dst=(0, 0, mode.hdisplay, mode.vdisplay))
42*f0687c8aSRaman Tenneti
43*f0687c8aSRaman Tenneti	req.commit_sync(allow_modeset = True)
44*f0687c8aSRaman Tenneti
45*f0687c8aSRaman Tenneti	input("press enter to show next videomode\n")
46*f0687c8aSRaman Tenneti
47*f0687c8aSRaman Tennetiprint("done")
48