1#!/usr/bin/python3 2 3import pykms 4import time 5 6card = pykms.Card() 7res = pykms.ResourceManager(card) 8conn = res.reserve_connector() 9crtc = res.reserve_crtc(conn) 10mode = conn.get_default_mode() 11 12planes = [] 13 14for i in range(3): 15 p = res.reserve_generic_plane(crtc) 16 17 if p == None: 18 print("Need 3 planes!") 19 exit(1) 20 21 planes.append(p) 22 23card.disable_planes() 24 25w = mode.hdisplay 26h = mode.vdisplay 27 28fbs=[] 29 30for i in range(len(planes)): 31 fbs.append(pykms.DumbFramebuffer(card, w, h, "AR24")) 32 33pykms.draw_rect(fbs[0], 50, 50, 200, 200, pykms.RGB(128, 255, 0, 0)) 34pykms.draw_rect(fbs[1], 150, 50, 200, 200, pykms.RGB(128, 0, 255, 0)) 35pykms.draw_rect(fbs[2], 50, 150, 200, 200, pykms.RGB(128, 0, 0, 255)) 36 37crtc.set_props({ 38 "trans-key-mode": 0, 39 "trans-key": 0, 40 "background": 0, 41 "alpha_blender": 1, 42}) 43 44for i in range(len(planes)): 45 plane = planes[i] 46 fb = fbs[i] 47 48 print("set crtc {}, plane {}, fb {}".format(crtc.id, p.id, fbs[i].id)) 49 50 plane.set_props({ 51 "FB_ID": fb.id, 52 "CRTC_ID": crtc.id, 53 "SRC_W": fb.width << 16, 54 "SRC_H": fb.height << 16, 55 "CRTC_W": fb.width, 56 "CRTC_H": fb.height, 57 "zorder": i, 58 }) 59 60 time.sleep(1) 61 62input("press enter to exit\n") 63