1 #!/usr/bin/python3
3 import pykms
4 import time
6 card = pykms.Card()
7 res = pykms.ResourceManager(card)
8 conn = res.reserve_connector()
9 crtc = res.reserve_crtc(conn)
10 mode = conn.get_default_mode()
12 planes = []
14 for i in range(3):
15 p = res.reserve_generic_plane(crtc)
17 if p == None:
18 print("Need 3 planes!")
19 exit(1)
21 planes.append(p)
23 card.disable_planes()
25 w = mode.hdisplay
26 h = mode.vdisplay
28 fbs=[]
30 for i in range(len(planes)):
31 fbs.append(pykms.DumbFramebuffer(card, w, h, "AR24"))
33 pykms.draw_rect(fbs[0], 50, 50, 200, 200, pykms.RGB(128, 255, 0, 0))
34 pykms.draw_rect(fbs[1], 150, 50, 200, 200, pykms.RGB(128, 0, 255, 0))
35 pykms.draw_rect(fbs[2], 50, 150, 200, 200, pykms.RGB(128, 0, 0, 255))
37 crtc.set_props({
38 "trans-key-mode": 0,
39 "trans-key": 0,
40 "background": 0,
41 "alpha_blender": 1,
42 })
44 for i in range(len(planes)):
45 plane = planes[i]
46 fb = fbs[i]
48 print("set crtc {}, plane {}, fb {}".format(crtc.id, p.id, fbs[i].id))
50 plane.set_props({
51 "FB_ID": fb.id,
52 "CRTC_ID": crtc.id,
53 "SRC_W": fb.width << 16,
54 "SRC_H": fb.height << 16,
55 "CRTC_W": fb.width,
56 "CRTC_H": fb.height,
57 "zorder": i,
58 })
60 time.sleep(1)
62 input("press enter to exit\n")