#!/usr/bin/python3 import sys import pykms # draw test pattern via dmabuf? dmabuf = False # Use omap? omap = False if omap: card = pykms.OmapCard() else: card = pykms.Card() if len(sys.argv) > 1: conn_name = sys.argv[1] else: conn_name = "" res = pykms.ResourceManager(card) conn = res.reserve_connector(conn_name) crtc = res.reserve_crtc(conn) plane = res.reserve_generic_plane(crtc) mode = conn.get_default_mode() modeb = mode.to_blob(card) if omap: origfb = pykms.OmapFramebuffer(card, mode.hdisplay, mode.vdisplay, "XR24"); else: origfb = pykms.DumbFramebuffer(card, mode.hdisplay, mode.vdisplay, "XR24"); if dmabuf: fb = pykms.ExtFramebuffer(card, origfb.width, origfb.height, origfb.format, [origfb.fd(0)], [origfb.stride(0)], [origfb.offset(0)]) else: fb = origfb pykms.draw_test_pattern(fb); card.disable_planes() req = pykms.AtomicReq(card) req.add(conn, "CRTC_ID", crtc.id) req.add(crtc, {"ACTIVE": 1, "MODE_ID": modeb.id}) req.add(plane, {"FB_ID": fb.id, "CRTC_ID": crtc.id, "SRC_X": 0 << 16, "SRC_Y": 0 << 16, "SRC_W": mode.hdisplay << 16, "SRC_H": mode.vdisplay << 16, "CRTC_X": 0, "CRTC_Y": 0, "CRTC_W": mode.hdisplay, "CRTC_H": mode.vdisplay, "zorder": 0}) req.commit_sync(allow_modeset = True) input("press enter to exit\n")