#!/usr/bin/python3 import kmstest import pykms import time class FormatsTest(kmstest.KMSTest): """Test all available plane formats.""" def main(self): self.start("plane formats") # Find a CRTC with a connected connector and at least one plane for connector in self.output_connectors(): if not connector.connected(): self.skip("unconnected connector") continue try: mode = connector.get_default_mode() except ValueError: continue crtcs = connector.get_possible_crtcs() for crtc in crtcs: if crtc.primary_plane: break else: crtc = None if crtc: break else: self.skip("no CRTC available with connector") return self.logger.log("Testing connector %s, CRTC %u, mode %s" % \ (connector.fullname, crtc.id, mode.name)) for format in crtc.primary_plane.formats: self.logger.log("Testing format %s" % format) # Create a frame buffer try: fb = pykms.DumbFramebuffer(self.card, mode.hdisplay, mode.vdisplay, format) except ValueError: continue pykms.draw_test_pattern(fb) # Set the mode with a primary plane ret = self.atomic_crtc_mode_set(crtc, connector, mode, fb) if ret < 0: self.fail("atomic mode set failed with %d" % ret) continue self.run(3) self.atomic_crtc_disable(crtc) self.success() FormatsTest().execute()