1*f0687c8aSRaman Tenneti#!/usr/bin/python3 -i 2*f0687c8aSRaman Tenneti 3*f0687c8aSRaman Tenneti# This is a base script for interactive kms++ python environment 4*f0687c8aSRaman Tenneti 5*f0687c8aSRaman Tennetiimport pykms 6*f0687c8aSRaman Tennetifrom time import sleep 7*f0687c8aSRaman Tennetifrom math import sin 8*f0687c8aSRaman Tennetifrom math import cos 9*f0687c8aSRaman Tenneti 10*f0687c8aSRaman Tenneticard = pykms.Card() 11*f0687c8aSRaman Tennetires = pykms.ResourceManager(card) 12*f0687c8aSRaman Tenneticonn = res.reserve_connector() 13*f0687c8aSRaman Tenneticrtc = res.reserve_crtc(conn) 14*f0687c8aSRaman Tenneti 15*f0687c8aSRaman Tennetimode = conn.get_default_mode() 16*f0687c8aSRaman Tenneti 17*f0687c8aSRaman Tennetifb = pykms.DumbFramebuffer(card, 200, 200, "XR24"); 18*f0687c8aSRaman Tennetipykms.draw_test_pattern(fb); 19*f0687c8aSRaman Tenneti 20*f0687c8aSRaman Tenneti#crtc.set_mode(conn, fb, mode) 21*f0687c8aSRaman Tenneti 22*f0687c8aSRaman Tennetii = 0 23*f0687c8aSRaman Tennetifor p in card.planes: 24*f0687c8aSRaman Tenneti globals()["plane"+str(i)] = p 25*f0687c8aSRaman Tenneti i=i+1 26*f0687c8aSRaman Tenneti 27*f0687c8aSRaman Tennetii = 0 28*f0687c8aSRaman Tennetifor c in card.crtcs: 29*f0687c8aSRaman Tenneti globals()["crtc"+str(i)] = c 30*f0687c8aSRaman Tenneti i=i+1 31*f0687c8aSRaman Tenneti 32*f0687c8aSRaman Tennetifor p in crtc.possible_planes: 33*f0687c8aSRaman Tenneti if p.plane_type == pykms.PlaneType.Overlay: 34*f0687c8aSRaman Tenneti plane = p 35*f0687c8aSRaman Tenneti break 36*f0687c8aSRaman Tenneti 37*f0687c8aSRaman Tennetidef set_plane(x, y): 38*f0687c8aSRaman Tenneti crtc.set_plane(plane, fb, x, y, fb.width, fb.height, 0, 0, fb.width, fb.height) 39*f0687c8aSRaman Tenneti 40*f0687c8aSRaman Tennetiset_plane(0, 0) 41*f0687c8aSRaman Tenneti 42*f0687c8aSRaman Tenneti# for x in range(0, crtc.width() - fb.width()): set_plane(x, int((sin(x/50) + 1) * 100)); sleep(0.01) 43