xref: /aosp_15_r20/external/libkmsxx/py/tests/alpha-test.py (revision f0687c8a10b3e371dbe09214db6664e37c283cca)
1*f0687c8aSRaman Tenneti#!/usr/bin/python3
2*f0687c8aSRaman Tenneti
3*f0687c8aSRaman Tennetiimport pykms
4*f0687c8aSRaman Tennetiimport time
5*f0687c8aSRaman Tennetiimport argparse
6*f0687c8aSRaman Tenneti
7*f0687c8aSRaman Tennetiparser = argparse.ArgumentParser(description='Simple alpha blending test.')
8*f0687c8aSRaman Tennetiparser.add_argument('--resetcrtc', action="store_true",
9*f0687c8aSRaman Tenneti		    help='Reset legacy CRTC color properties')
10*f0687c8aSRaman Tennetiparser.add_argument('--connector', '-c', dest='connector', default="",
11*f0687c8aSRaman Tenneti		    required=False, help='connector to output')
12*f0687c8aSRaman Tennetiparser.add_argument('--mode', '-m', dest='modename',
13*f0687c8aSRaman Tenneti		    required=False, help='Video mode name to use')
14*f0687c8aSRaman Tennetiargs = parser.parse_args()
15*f0687c8aSRaman Tenneti
16*f0687c8aSRaman Tennetimax_planes = 4
17*f0687c8aSRaman Tenneti
18*f0687c8aSRaman Tenneticard = pykms.Card()
19*f0687c8aSRaman Tennetires = pykms.ResourceManager(card)
20*f0687c8aSRaman Tenneticonn = res.reserve_connector(args.connector)
21*f0687c8aSRaman Tenneticrtc = res.reserve_crtc(conn)
22*f0687c8aSRaman Tennetiif args.modename == None:
23*f0687c8aSRaman Tenneti    mode = conn.get_default_mode()
24*f0687c8aSRaman Tennetielse:
25*f0687c8aSRaman Tenneti    mode = conn.get_mode(args.modename)
26*f0687c8aSRaman Tenneti
27*f0687c8aSRaman Tennetiplanes = []
28*f0687c8aSRaman Tenneti
29*f0687c8aSRaman Tennetifor i in range(max_planes):
30*f0687c8aSRaman Tenneti    p = res.reserve_generic_plane(crtc)
31*f0687c8aSRaman Tenneti    if p == None:
32*f0687c8aSRaman Tenneti        break
33*f0687c8aSRaman Tenneti    planes.append(p)
34*f0687c8aSRaman Tenneti
35*f0687c8aSRaman Tennetiprint("Got {} planes. Test supports up to 4 planes.".format(len(planes)))
36*f0687c8aSRaman Tenneti
37*f0687c8aSRaman Tenneticard.disable_planes()
38*f0687c8aSRaman Tenneti
39*f0687c8aSRaman Tennetiw = mode.hdisplay
40*f0687c8aSRaman Tennetih = mode.vdisplay
41*f0687c8aSRaman Tenneti
42*f0687c8aSRaman Tennetifbs=[]
43*f0687c8aSRaman Tenneti
44*f0687c8aSRaman Tennetifor i in range(max_planes):
45*f0687c8aSRaman Tenneti    fbs.append(pykms.DumbFramebuffer(card, w, h, "AR24"))
46*f0687c8aSRaman Tenneti
47*f0687c8aSRaman Tennetipykms.draw_rect(fbs[0], 50, 50, 200, 200, pykms.RGB(128, 255, 0, 0))
48*f0687c8aSRaman Tennetipykms.draw_rect(fbs[1], 150, 50, 200, 200, pykms.RGB(128, 0, 255, 0))
49*f0687c8aSRaman Tennetipykms.draw_rect(fbs[2], 50, 150, 200, 200, pykms.RGB(128, 0, 0, 255))
50*f0687c8aSRaman Tennetipykms.draw_rect(fbs[3], 150, 150, 200, 200, pykms.RGB(128, 128, 128, 128))
51*f0687c8aSRaman Tenneti
52*f0687c8aSRaman Tenneticard.disable_planes()
53*f0687c8aSRaman Tenneti
54*f0687c8aSRaman Tennetiif args.resetcrtc:
55*f0687c8aSRaman Tenneti    crtc.set_props({
56*f0687c8aSRaman Tenneti        "trans-key-mode": 0,
57*f0687c8aSRaman Tenneti        "trans-key": 0,
58*f0687c8aSRaman Tenneti        "background": 0,
59*f0687c8aSRaman Tenneti        "alpha_blender": 1,
60*f0687c8aSRaman Tenneti    })
61*f0687c8aSRaman Tenneti
62*f0687c8aSRaman Tennetifor i in range(len(planes)):
63*f0687c8aSRaman Tenneti    plane = planes[i]
64*f0687c8aSRaman Tenneti    fb = fbs[i]
65*f0687c8aSRaman Tenneti
66*f0687c8aSRaman Tenneti    print("set crtc {}, plane {}, z {}, fb {}".format(crtc.id, plane.id, i, fb.id))
67*f0687c8aSRaman Tenneti
68*f0687c8aSRaman Tenneti    plane.set_props({
69*f0687c8aSRaman Tenneti        "FB_ID": fb.id,
70*f0687c8aSRaman Tenneti        "CRTC_ID": crtc.id,
71*f0687c8aSRaman Tenneti        "SRC_W": fb.width << 16,
72*f0687c8aSRaman Tenneti        "SRC_H": fb.height << 16,
73*f0687c8aSRaman Tenneti        "CRTC_W": fb.width,
74*f0687c8aSRaman Tenneti        "CRTC_H": fb.height,
75*f0687c8aSRaman Tenneti        "zpos": i,
76*f0687c8aSRaman Tenneti    })
77*f0687c8aSRaman Tenneti
78*f0687c8aSRaman Tenneti    time.sleep(1)
79*f0687c8aSRaman Tenneti
80*f0687c8aSRaman Tennetiinput("press enter to exit\n")
81