summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xpy/tests/scale.py60
1 files changed, 60 insertions, 0 deletions
diff --git a/py/tests/scale.py b/py/tests/scale.py
new file mode 100755
index 0000000..0b97051
--- /dev/null
+++ b/py/tests/scale.py
@@ -0,0 +1,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