def __init__(self, state): self.state = state self.cm = state.cm self.contexts = state.contexts self.running = False card = pykms.Card() res = pykms.ResourceManager(card) conn = res.reserve_connector() crtc = res.reserve_crtc(conn) mode = conn.get_default_mode() modeb = mode.to_blob(card) req = pykms.AtomicReq(card) req.add_connector(conn, crtc) req.add_crtc(crtc, modeb) r = req.commit_sync(allow_modeset=True) assert(r == 0) self.card = card self.resman = res self.crtc = crtc self.mode = mode self.bufqueue = [] self.current = None self.next = None self.cam_2_drm = {}
#!/usr/bin/python3 import pykms import argparse parser = argparse.ArgumentParser() parser.add_argument("-c", "--connector", default="") parser.add_argument("-l", "--legacy", action="store_true", default=False) args = parser.parse_args() card = pykms.Card() res = pykms.ResourceManager(card) conn = res.reserve_connector(args.connector) crtc = res.reserve_crtc(conn) mode = conn.get_default_mode() fb = pykms.DumbFramebuffer(card, mode.hdisplay, mode.vdisplay, "XR24"); pykms.draw_test_pattern(fb); crtc.set_mode(conn, fb, mode) use_legacy = args.legacy if not use_legacy: prop = crtc.get_prop("GAMMA_LUT") if not prop: prop = crtc.get_prop("DEGAMMA_LUT") if not prop: print("No gamma property found")
def main(argv): if len(argv) > 1: conn_name = argv[1] else: conn_name = '' card = pykms.Card() if not card.has_atomic: raise RuntimeError('This test requires atomic update support') res = pykms.ResourceManager(card) conn = res.reserve_connector(conn_name) crtc = res.reserve_crtc(conn) mode = conn.get_default_mode() flip_handler = FlipHandler(crtc, mode.hdisplay, mode.vdisplay) fb = flip_handler.fb1 pykms.draw_color_bar(fb, fb.width - bar_width - bar_speed, bar_speed, bar_width) mode_blob = mode.to_blob(card) req = pykms.AtomicReq(card) req.add(conn, 'CRTC_ID', crtc.id) req.add(crtc, {'ACTIVE': 1, 'MODE_ID': mode_blob.id}) req.add( crtc.primary_plane, { 'FB_ID': fb.id, 'CRTC_ID': crtc.id, 'SRC_X': 0 << 16, 'SRC_Y': 0 << 16, 'SRC_W': fb.width << 16, 'SRC_H': fb.height << 16, 'CRTC_X': 0, 'CRTC_Y': 0, 'CRTC_W': fb.width, 'CRTC_H': fb.height, }) ret = req.commit(allow_modeset=True) if ret < 0: raise RuntimeError('Atomic mode set failed with %d' % ret) def bye(): # Signal the timeline to complete all pending page flips flip_handler.timeline.signal(100) exit(0) def readdrm(fileobj, mask): for ev in card.read_events(): if ev.type == pykms.DrmEventType.FLIP_COMPLETE: flip_handler.handle_page_flip(ev.seq, ev.time) def readkey(fileobj, mask): sys.stdin.readline() bye() sel = selectors.DefaultSelector() sel.register(card.fd, selectors.EVENT_READ, readdrm) sel.register(sys.stdin, selectors.EVENT_READ, readkey) while True: timeout = Timer.next_timeout() print("--> timeout %s" % repr(timeout)) try: events = sel.select(timeout) except KeyboardInterrupt: bye() for key, mask in events: callback = key.data callback(key.fileobj, mask) Timer.fire()