1 #!/usr/bin/python3
3 import pykms
4 import time
5 import random
7 card = pykms.Card()
8 res = pykms.ResourceManager(card)
9 conn = res.reserve_connector("hdmi")
10 crtc = res.reserve_crtc(conn)
11 plane = res.reserve_overlay_plane(crtc)
13 mode = conn.get_default_mode()
14 #mode = conn.get_mode(1920, 1080, 60, False)
16 # Blank framefuffer for primary plane
17 fb0 = pykms.DumbFramebuffer(card, mode.hdisplay, mode.vdisplay, "AR24");
19 crtc.set_mode(conn, fb0, mode)
21 # Initialize framebuffer for the scaled plane
22 fbX = 1920
23 fbY = 1080
24 fb = pykms.DumbFramebuffer(card, fbX, fbY, "RG16");
25 pykms.draw_test_pattern(fb);
27 # Plane's scaled size and size increments
28 W = 72
29 H = 54
30 Winc = 1
31 Hinc = 1
33 # Plane's position and position increments
34 X = 0
35 Y = 0
36 Xinc = 1
37 Yinc = 1
38 while True:
39 print("+%d+%d %dx%d" % (X, Y, W, H))
40 crtc.set_plane(plane, fb, X, Y, W, H, 0, 0, fbX, fbY)
41 W = W + Winc
42 H = H + Hinc
43 if (Winc == 1 and W >= mode.hdisplay - X):
44 Winc = -1
45 if (Winc == -1 and W <= fbX/32):
46 Winc = 1
47 if (Hinc == 1 and H >= mode.vdisplay - Y):
48 Hinc = -1
49 if (Hinc == -1 and H <= fbY/32):
50 Hinc = 1
51 X = X + Xinc
52 Y = Y + Yinc
53 if (Xinc == 1 and X >= mode.hdisplay - W):
54 Xinc = -1
55 if (Xinc == -1 and X <= 0):
56 Xinc = 1
57 if (Yinc == 1 and Y >= mode.vdisplay - H):
58 Yinc = -1
59 if (Yinc == -1 and Y <= 0):
60 Yinc = 1