summaryrefslogtreecommitdiff
path: root/py/alpha-test.py
blob: 99c84fbfd5d09f34acec760faf52c3e0c9e5ed08 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#!/usr/bin/python3

import pykms
from helpers import *
import time

# This hack makes drm initialize the fbcon, setting up the default connector
card = pykms.Card()
card = 0

card = pykms.Card()

conn = card.get_first_connected_connector()
mode = conn.get_default_mode()
crtc = conn.get_current_crtc()

planes = []
for p in card.planes:
    if p.supports_crtc(crtc) == False:
        continue
    planes.append(p)

if len(planes) != 3:
    print("Need 3 planes!")
    exit(1)

disable_planes(card)

w = mode.hdisplay
h = mode.vdisplay

fbs=[]

for i in range(len(planes)):
    fbs.append(pykms.DumbFramebuffer(card, w, h, "AR24"))

pykms.draw_rect(fbs[0], 50, 50, 200, 200, pykms.RGB(128, 255, 0, 0))
pykms.draw_rect(fbs[1], 150, 50, 200, 200, pykms.RGB(128, 0, 255, 0))
pykms.draw_rect(fbs[2], 50, 150, 200, 200, pykms.RGB(128, 0, 0, 255))


set_props(crtc, {
    "trans-key-mode": 0,
    "trans-key": 0,
    "background": 0,
    "alpha_blender": 1,
})

for i in range(len(planes)):
    plane = planes[i]
    fb = fbs[i]

    print("set crtc {}, plane {}, fb {}".format(crtc.id(), p.id(), fbs[i].id()))

    set_props(plane, {
        "FB_ID": fb.id(),
        "CRTC_ID": crtc.id(),
        "SRC_W": fb.width() << 16,
        "SRC_H": fb.height() << 16,
        "CRTC_W": fb.width(),
        "CRTC_H": fb.height(),
        "zorder": i,
    })

    time.sleep(1)

input("press enter to exit\n")