summaryrefslogtreecommitdiff
path: root/py/tests/scale.py
blob: 0b97051cc7b4db3cecc5746a05b926d55d4b1e8d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#!/usr/bin/python3

import pykms
import time
import random

card = pykms.Card()
res = pykms.ResourceManager(card)
conn = res.reserve_connector("hdmi")
crtc = res.reserve_crtc(conn)
plane = res.reserve_overlay_plane(crtc)

mode = conn.get_default_mode()
#mode = conn.get_mode(1920, 1080, 60, False)

# Blank framefuffer for primary plane
fb0 = pykms.DumbFramebuffer(card, mode.hdisplay, mode.vdisplay, "AR24");

crtc.set_mode(conn, fb0, mode)

# Initialize framebuffer for the scaled plane
fbX = 1920
fbY = 1080
fb = pykms.DumbFramebuffer(card, fbX, fbY, "RG16");
pykms.draw_test_pattern(fb);

# Plane's scaled size and size increments
W = 72
H = 54
Winc = 1
Hinc = 1

# Plane's position and position increments
X = 0
Y = 0
Xinc = 1
Yinc = 1
while True:
	print("+%d+%d %dx%d" % (X, Y, W, H))
	crtc.set_plane(plane, fb, X, Y, W, H, 0, 0, fbX, fbY)
	W = W + Winc
	H = H + Hinc
	if (Winc == 1 and W >= mode.hdisplay - X):
		Winc = -1
	if (Winc == -1 and W <= fbX/32):
		Winc = 1
	if (Hinc == 1 and H >= mode.vdisplay - Y):
		Hinc = -1
	if (Hinc == -1 and H <= fbY/32):
		Hinc = 1
	X = X + Xinc
	Y = Y + Yinc
	if (Xinc == 1 and X >= mode.hdisplay - W):
		Xinc = -1
	if (Xinc == -1 and X <= 0):
		Xinc = 1
	if (Yinc == 1 and Y >= mode.vdisplay - H):
		Yinc = -1
	if (Yinc == -1 and Y <= 0):
		Yinc = 1