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