xref: /aosp_15_r20/external/libkmsxx/py/tests/plane_csc.py (revision f0687c8a10b3e371dbe09214db6664e37c283cca)
1*f0687c8aSRaman Tenneti#!/usr/bin/python3
2*f0687c8aSRaman Tenneti
3*f0687c8aSRaman Tennetiimport pykms
4*f0687c8aSRaman Tenneti
5*f0687c8aSRaman Tenneticard = pykms.Card()
6*f0687c8aSRaman Tennetires = pykms.ResourceManager(card)
7*f0687c8aSRaman Tenneticonn = res.reserve_connector("")
8*f0687c8aSRaman Tenneticrtc = res.reserve_crtc(conn)
9*f0687c8aSRaman Tennetimode = conn.get_default_mode()
10*f0687c8aSRaman Tennetimodeb = mode.to_blob(card)
11*f0687c8aSRaman Tennetiplane = res.reserve_generic_plane(crtc, pykms.PixelFormat.UYVY)
12*f0687c8aSRaman Tenneti
13*f0687c8aSRaman Tennetiprint("Got plane %d %d" % (plane.idx, plane.id))
14*f0687c8aSRaman Tenneti
15*f0687c8aSRaman Tennetifb = pykms.DumbFramebuffer(card, mode.hdisplay, mode.vdisplay, "UYVY");
16*f0687c8aSRaman Tennetipykms.draw_test_pattern(fb);
17*f0687c8aSRaman Tenneti
18*f0687c8aSRaman Tennetireq = pykms.AtomicReq(card)
19*f0687c8aSRaman Tennetireq.add(conn, "CRTC_ID", crtc.id)
20*f0687c8aSRaman Tennetireq.add(crtc, {"ACTIVE": 1,
21*f0687c8aSRaman Tenneti               "MODE_ID": modeb.id})
22*f0687c8aSRaman Tenneti
23*f0687c8aSRaman Tennetiinput("Press enter to enable crtc idx %d at %s" % (crtc.idx, conn.fullname))
24*f0687c8aSRaman Tennetir = req.commit_sync(allow_modeset = True)
25*f0687c8aSRaman Tenneti
26*f0687c8aSRaman Tennetiinput("Press enter to enable plane idx %d at %s" % (plane.idx, conn.fullname))
27*f0687c8aSRaman Tenneti
28*f0687c8aSRaman Tennetireq = pykms.AtomicReq(card)
29*f0687c8aSRaman Tennetireq.add_plane(plane, fb, crtc)
30*f0687c8aSRaman Tennetir = req.commit_sync()
31*f0687c8aSRaman Tennetiprint("Plane enable request returned %d\n" % r)
32*f0687c8aSRaman Tenneti
33*f0687c8aSRaman Tennetiyuv_types = [pykms.YUVType.BT601_Lim,
34*f0687c8aSRaman Tenneti             pykms.YUVType.BT601_Full,
35*f0687c8aSRaman Tenneti             pykms.YUVType.BT709_Lim,
36*f0687c8aSRaman Tenneti             pykms.YUVType.BT709_Full]
37*f0687c8aSRaman Tenneti
38*f0687c8aSRaman Tennetiencoding_enums = plane.get_prop("COLOR_ENCODING").enums
39*f0687c8aSRaman Tennetirange_enums = plane.get_prop("COLOR_RANGE").enums
40*f0687c8aSRaman Tenneti
41*f0687c8aSRaman Tennetifor i in range(0, 2):
42*f0687c8aSRaman Tenneti    for j in range(0, 2):
43*f0687c8aSRaman Tenneti        input("press enter to for encoding: \"%s\" range: \"%s\"\n" %
44*f0687c8aSRaman Tenneti              (encoding_enums[i], range_enums[j]))
45*f0687c8aSRaman Tenneti
46*f0687c8aSRaman Tenneti        req = pykms.AtomicReq(card)
47*f0687c8aSRaman Tenneti        req.add(plane, {"COLOR_ENCODING": i,
48*f0687c8aSRaman Tenneti                 "COLOR_RANGE": j})
49*f0687c8aSRaman Tenneti        req.commit_sync()
50*f0687c8aSRaman Tenneti
51*f0687c8aSRaman Tenneti        for t in yuv_types:
52*f0687c8aSRaman Tenneti            input("press enter to redraw with yuv_type %s\n" % t)
53*f0687c8aSRaman Tenneti            pykms.draw_test_pattern(fb, t);
54*f0687c8aSRaman Tenneti
55*f0687c8aSRaman Tennetiinput("press enter to exit\n")
56