]> Gitweb @ Texas Instruments - Open Source Git Repositories - git.TI.com/gitweb - android/external-libkmsxx.git/blob - py/tests/trans-test.py
py: drop the fancy event handling
[android/external-libkmsxx.git] / py / tests / trans-test.py
1 #!/usr/bin/python3
3 import pykms
4 import time
6 # This hack makes drm initialize the fbcon, setting up the default connector
7 card = pykms.Card()
8 card = 0
10 card = pykms.Card()
11 res = pykms.ResourceManager(card)
12 conn = res.reserve_connector()
13 crtc = res.reserve_crtc(conn)
14 mode = conn.get_default_mode()
16 planes = []
17 for p in card.planes:
18     if p.supports_crtc(crtc) == False:
19         continue
20     planes.append(p)
22 card.disable_planes()
24 w = mode.hdisplay
25 h = mode.vdisplay
27 fbs=[]
29 def test_am5_trans_dest():
30     fbs.append(pykms.DumbFramebuffer(card, w, h, "XR24"))
31     fbs.append(pykms.DumbFramebuffer(card, w, h, "XR24"))
33     fb = fbs[0]
34     pykms.draw_rect(fb, 0, 0, fb.width, fb.height, pykms.purple)
35     pykms.draw_rect(fb, 100, 100, 100, 200, pykms.green)
36     pykms.draw_rect(fb, 300, 100, 100, 200, pykms.red)
37     pykms.draw_rect(fb, 500, 100, 100, 200, pykms.white)
39     fb = fbs[1]
40     pykms.draw_rect(fb, 0, 0, fb.width, fb.height, pykms.cyan)
41     pykms.draw_rect(fb, 250, 100, 200, 200, pykms.yellow)
43     crtc.set_props({
44         "trans-key-mode": 1,
45         "trans-key": pykms.purple.rgb888,
46         "background": 0,
47         "alpha_blender": 0,
48     })
50     plane = 0
52     for i in range(0,2):
53         print("set crtc {}, plane {}, fb {}".format(crtc.id, planes[i].id, fbs[i].id))
55         plane = planes[i]
56         fb = fbs[i]
57         plane.set_props({
58             "FB_ID": fb.id,
59             "CRTC_ID": crtc.id,
60             "SRC_W": fb.width << 16,
61             "SRC_H": fb.height << 16,
62             "CRTC_W": fb.width,
63             "CRTC_H": fb.height,
64             "zorder": i,
65         })
67         time.sleep(1)
69 def test_am5_trans_src():
70     fbs.append(pykms.DumbFramebuffer(card, w, h, "XR24"))
71     fbs.append(pykms.DumbFramebuffer(card, w, h, "XR24"))
73     fb = fbs[0]
74     pykms.draw_rect(fb, 0, 0, fb.width, fb.height, pykms.white)
75     pykms.draw_rect(fb, 200, 200, 100, 100, pykms.red)
76     pykms.draw_rect(fb, fb.width - 300, 200, 100, 100, pykms.green)
78     fb = fbs[1]
79     pykms.draw_rect(fb, 0, 0, fb.width, fb.height, pykms.cyan)
80     pykms.draw_rect(fb, 100, 100, 500, 500, pykms.purple)
82     crtc.set_props({
83         "trans-key-mode": 2,
84         "trans-key": pykms.purple.rgb888,
85         "background": 0,
86         "alpha_blender": 0,
87     })
89     plane = 0
91     for i in range(0,2):
92         print("set crtc {}, plane {}, fb {}".format(crtc.id, planes[i].id, fbs[i].id))
94         plane = planes[i]
95         fb = fbs[i]
96         plane.set_props({
97             "FB_ID": fb.id,
98             "CRTC_ID": crtc.id,
99             "SRC_W": fb.width << 16,
100             "SRC_H": fb.height << 16,
101             "CRTC_W": fb.width,
102             "CRTC_H": fb.height,
103             "zorder": 3 if i == 1 else 0,
104         })
106         time.sleep(1)
108 def test_am4_normal_trans_dst():
109     fbs.append(pykms.DumbFramebuffer(card, w, h, "XR24"))
110     fbs.append(pykms.DumbFramebuffer(card, w * 2 // 3, h, "XR24"))
111     fbs.append(pykms.DumbFramebuffer(card, w * 2 // 3, h, "XR24"))
113     fb = fbs[0]
114     pykms.draw_rect(fb, 0, 0, w, h, pykms.purple)
115     pykms.draw_rect(fb, 100, 50, 50, 200, pykms.green)
116     pykms.draw_rect(fb, 200, 50, 50, 200, pykms.red)
117     pykms.draw_rect(fb, 300, 50, 50, 200, pykms.white)
119     fb = fbs[1]
120     pykms.draw_rect(fb, 0, 0, fb.width, fb.height, pykms.blue)
122     fb = fbs[2]
123     pykms.draw_rect(fb, 0, 0, fb.width, fb.height, pykms.cyan)
125     crtc.set_props({
126         "trans-key-mode": 1,
127         "trans-key": pykms.purple.rgb888,
128         "background": 0,
129         "alpha_blender": 0,
130     })
132     time.sleep(1)
134     plane = planes[0]
135     fb = fbs[0]
136     plane.set_props({
137         "FB_ID": fb.id,
138         "CRTC_ID": crtc.id,
139         "SRC_W": fb.width << 16,
140         "SRC_H": fb.height << 16,
141         "CRTC_W": w,
142         "CRTC_H": h,
143     })
145     time.sleep(1)
147     plane = planes[1]
148     fb = fbs[1]
149     plane.set_props({
150         "FB_ID": fb.id,
151         "CRTC_ID": crtc.id,
152         "SRC_X": 0 << 16,
153         "SRC_Y": 0 << 16,
154         "SRC_W": fb.width << 16,
155         "SRC_H": fb.height << 16,
156         "CRTC_X": 0,
157         "CRTC_Y": 0,
158         "CRTC_W": fb.width,
159         "CRTC_H": fb.height,
160     })
162     time.sleep(1)
164     plane = planes[2]
165     fb = fbs[2]
166     plane.set_props({
167         "FB_ID": fb.id,
168         "CRTC_ID": crtc.id,
169         "SRC_X": 0 << 16,
170         "SRC_Y": 0 << 16,
171         "SRC_W": fb.width << 16,
172         "SRC_H": fb.height << 16,
173         "CRTC_X": w // 3,
174         "CRTC_Y": 0,
175         "CRTC_W": fb.width,
176         "CRTC_H": fb.height,
177     })
179 def test_am4_normal_trans_src():
180     fbs.append(pykms.DumbFramebuffer(card, w, h, "XR24"))
181     fbs.append(pykms.DumbFramebuffer(card, w // 2, h, "XR24"))
182     fbs.append(pykms.DumbFramebuffer(card, w // 2, h, "XR24"))
184     fb = fbs[0]
185     pykms.draw_rect(fb, 0, 0, w, h, pykms.RGB(128, 255, 255))
186     pykms.draw_rect(fb, 200, 100, 50, 200, pykms.red)
187     pykms.draw_rect(fb, w - 200 - 50, 100, 50, 200, pykms.green)
189     fb = fbs[1]
190     pykms.draw_rect(fb, 0, 0, fb.width, fb.height, pykms.blue)
191     pykms.draw_rect(fb, 100, 100, fb.width - 200, fb.height - 200, pykms.purple)
193     fb = fbs[2]
194     pykms.draw_rect(fb, 0, 0, fb.width, fb.height, pykms.cyan)
195     pykms.draw_rect(fb, 100, 100, fb.width - 200, fb.height - 200, pykms.purple)
197     crtc.set_props({
198         "trans-key-mode": 2,
199         "trans-key": pykms.purple.rgb888,
200         "background": 0,
201         "alpha_blender": 0,
202     })
204     time.sleep(1)
206     plane = planes[0]
207     fb = fbs[0]
208     plane.set_props({
209         "FB_ID": fb.id,
210         "CRTC_ID": crtc.id,
211         "SRC_W": fb.width << 16,
212         "SRC_H": fb.height << 16,
213         "CRTC_W": w,
214         "CRTC_H": h,
215     })
217     time.sleep(1)
219     plane = planes[1]
220     fb = fbs[1]
221     plane.set_props({
222         "FB_ID": fb.id,
223         "CRTC_ID": crtc.id,
224         "SRC_X": 0 << 16,
225         "SRC_Y": 0 << 16,
226         "SRC_W": fb.width << 16,
227         "SRC_H": fb.height << 16,
228         "CRTC_X": 0,
229         "CRTC_Y": 0,
230         "CRTC_W": fb.width,
231         "CRTC_H": fb.height,
232     })
234     time.sleep(1)
236     plane = planes[2]
237     fb = fbs[2]
238     plane.set_props({
239         "FB_ID": fb.id,
240         "CRTC_ID": crtc.id,
241         "SRC_X": 0 << 16,
242         "SRC_Y": 0 << 16,
243         "SRC_W": fb.width << 16,
244         "SRC_H": fb.height << 16,
245         "CRTC_X": w - fb.width,
246         "CRTC_Y": 0,
247         "CRTC_W": fb.width,
248         "CRTC_H": fb.height,
249     })
251 def test_am4_alpha_trans_src():
252     fbs.append(pykms.DumbFramebuffer(card, w, h, "XR24"))
253     fbs.append(pykms.DumbFramebuffer(card, w // 2, h, "XR24"))
254     fbs.append(pykms.DumbFramebuffer(card, w // 2, h, "XR24"))
256     fb = fbs[0]
257     pykms.draw_rect(fb, 0, 0, w, h, pykms.purple)
258     pykms.draw_rect(fb, 200, 100, 50, 200, pykms.red)
259     pykms.draw_rect(fb, w - 200 - 50, 100, 50, 200, pykms.green)
261     fb = fbs[1]
262     pykms.draw_rect(fb, 0, 0, fb.width, fb.height, pykms.blue)
263     pykms.draw_rect(fb, 100, 100, fb.width - 200, fb.height - 200, pykms.purple)
265     fb = fbs[2]
266     pykms.draw_rect(fb, 0, 0, fb.width, fb.height, pykms.cyan)
267     pykms.draw_rect(fb, 100, 100, fb.width - 200, fb.height - 200, pykms.purple)
269     crtc.set_props({
270         "trans-key-mode": 1,
271         "trans-key": pykms.purple.rgb888,
272         "background": 0,
273         "alpha_blender": 1,
274     })
276     time.sleep(1)
278     plane = planes[0]
279     fb = fbs[0]
280     plane.set_props({
281         "FB_ID": fb.id,
282         "CRTC_ID": crtc.id,
283         "SRC_W": fb.width << 16,
284         "SRC_H": fb.height << 16,
285         "CRTC_W": w,
286         "CRTC_H": h,
287     })
289     time.sleep(1)
291     plane = planes[1]
292     fb = fbs[1]
293     plane.set_props({
294         "FB_ID": fb.id,
295         "CRTC_ID": crtc.id,
296         "SRC_X": 0 << 16,
297         "SRC_Y": 0 << 16,
298         "SRC_W": fb.width << 16,
299         "SRC_H": fb.height << 16,
300         "CRTC_X": 0,
301         "CRTC_Y": 0,
302         "CRTC_W": fb.width,
303         "CRTC_H": fb.height,
304     })
306     time.sleep(1)
308     plane = planes[2]
309     fb = fbs[2]
310     plane.set_props({
311         "FB_ID": fb.id,
312         "CRTC_ID": crtc.id,
313         "SRC_X": 0 << 16,
314         "SRC_Y": 0 << 16,
315         "SRC_W": fb.width << 16,
316         "SRC_H": fb.height << 16,
317         "CRTC_X": w - fb.width,
318         "CRTC_Y": 0,
319         "CRTC_W": fb.width,
320         "CRTC_H": fb.height,
321     })
325 #test_am5_trans_dest()
326 test_am5_trans_src()
327 #test_am4_normal_trans_dst()
328 #test_am4_normal_trans_src()
329 #test_am4_alpha_trans_src()
331 input("press enter to exit\n")