• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1#!/usr/bin/python3
2
3import pykms
4import time
5
6card = pykms.Card()
7res = pykms.ResourceManager(card)
8conn = res.reserve_connector()
9crtc = res.reserve_crtc(conn)
10mode = conn.get_default_mode()
11
12planes = []
13
14for i in range(3):
15    p = res.reserve_generic_plane(crtc)
16
17    if p == None:
18        print("Need 3 planes!")
19        exit(1)
20
21    planes.append(p)
22
23card.disable_planes()
24
25w = mode.hdisplay
26h = mode.vdisplay
27
28fbs=[]
29
30for i in range(len(planes)):
31    fbs.append(pykms.DumbFramebuffer(card, w, h, "AR24"))
32
33pykms.draw_rect(fbs[0], 50, 50, 200, 200, pykms.RGB(128, 255, 0, 0))
34pykms.draw_rect(fbs[1], 150, 50, 200, 200, pykms.RGB(128, 0, 255, 0))
35pykms.draw_rect(fbs[2], 50, 150, 200, 200, pykms.RGB(128, 0, 0, 255))
36
37crtc.set_props({
38    "trans-key-mode": 0,
39    "trans-key": 0,
40    "background": 0,
41    "alpha_blender": 1,
42})
43
44for i in range(len(planes)):
45    plane = planes[i]
46    fb = fbs[i]
47
48    print("set crtc {}, plane {}, fb {}".format(crtc.id, p.id, fbs[i].id))
49
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    })
59
60    time.sleep(1)
61
62input("press enter to exit\n")
63