diff options
Diffstat (limited to 'py')
| -rwxr-xr-x | py/tests/trans-test.py | 143 | 
1 files changed, 101 insertions, 42 deletions
diff --git a/py/tests/trans-test.py b/py/tests/trans-test.py index 8b8e6c5..8c1cfb9 100755 --- a/py/tests/trans-test.py +++ b/py/tests/trans-test.py @@ -2,6 +2,18 @@  import pykms  import time +import sys + +if len(sys.argv) != 2: +    print("Usage: {} <test-number>".format(sys.argv[1])) +    print("  1 - test_am5_trans_dest()") +    print("  2 - test_am5_trans_src()") +    print("  3 - test_am4_normal_trans_dst()") +    print("  4 - test_am4_normal_trans_src()") +    print("  5 - test_am4_alpha_trans_src()") +    exit(0) + +TEST = int(sys.argv[1])  # This hack makes drm initialize the fbcon, setting up the default connector  card = pykms.Card() @@ -26,6 +38,7 @@ h = mode.vdisplay  fbs=[] +# See Figure 11-78. DISPC Destination Transparency Color Key Example  def test_am5_trans_dest():      fbs.append(pykms.DumbFramebuffer(card, w, h, "XR24"))      fbs.append(pykms.DumbFramebuffer(card, w, h, "XR24")) @@ -38,7 +51,7 @@ def test_am5_trans_dest():      fb = fbs[1]      pykms.draw_rect(fb, 0, 0, fb.width, fb.height, pykms.cyan) -    pykms.draw_rect(fb, 250, 100, 200, 200, pykms.yellow) +    pykms.draw_circle(fb, 350, 200, 100, pykms.yellow)      crtc.set_props({          "trans-key-mode": 1, @@ -47,25 +60,43 @@ def test_am5_trans_dest():          "alpha_blender": 0,      }) -    plane = 0 +    print("Purple bg. Green, red, white boxes.") -    for i in range(0,2): -        print("set crtc {}, plane {}, fb {}".format(crtc.id, planes[i].id, fbs[i].id)) +    plane = planes[0] +    fb = fbs[0] +    z = 0 -        plane = planes[i] -        fb = fbs[i] -        plane.set_props({ -            "FB_ID": fb.id, -            "CRTC_ID": crtc.id, -            "SRC_W": fb.width << 16, -            "SRC_H": fb.height << 16, -            "CRTC_W": fb.width, -            "CRTC_H": fb.height, -            "zorder": i, -        }) +    plane.set_props({ +        "FB_ID": fb.id, +        "CRTC_ID": crtc.id, +        "SRC_W": fb.width << 16, +        "SRC_H": fb.height << 16, +        "CRTC_W": fb.width, +        "CRTC_H": fb.height, +        "zorder": z, +    }) -        time.sleep(1) +    input("press enter\n") +    print("Cyan bg. Green, red, white boxes. Yellow circle behind the red box.") + +    plane = planes[1] +    fb = fbs[1] +    z = 1 + +    plane.set_props({ +        "FB_ID": fb.id, +        "CRTC_ID": crtc.id, +        "SRC_W": fb.width << 16, +        "SRC_H": fb.height << 16, +        "CRTC_W": fb.width, +        "CRTC_H": fb.height, +        "zorder": z, +    }) + +    input("press enter\n") + +# See Figure 11-77. DISPC Source Transparency Color Key Example  def test_am5_trans_src():      fbs.append(pykms.DumbFramebuffer(card, w, h, "XR24"))      fbs.append(pykms.DumbFramebuffer(card, w, h, "XR24")) @@ -86,24 +117,41 @@ def test_am5_trans_src():          "alpha_blender": 0,      }) -    plane = 0 +    print("White bg. Red and green boxes.") + +    plane = planes[0] +    fb = fbs[0] +    z = 0 + +    plane.set_props({ +        "FB_ID": fb.id, +        "CRTC_ID": crtc.id, +        "SRC_W": fb.width << 16, +        "SRC_H": fb.height << 16, +        "CRTC_W": fb.width, +        "CRTC_H": fb.height, +        "zorder": z, +    }) + +    input("press enter\n") -    for i in range(0,2): -        print("set crtc {}, plane {}, fb {}".format(crtc.id, planes[i].id, fbs[i].id)) +    print("Cyan bg. Big white box, containing red and green boxes.") -        plane = planes[i] -        fb = fbs[i] -        plane.set_props({ -            "FB_ID": fb.id, -            "CRTC_ID": crtc.id, -            "SRC_W": fb.width << 16, -            "SRC_H": fb.height << 16, -            "CRTC_W": fb.width, -            "CRTC_H": fb.height, -            "zorder": 3 if i == 1 else 0, -        }) +    plane = planes[1] +    fb = fbs[1] +    z = 3 -        time.sleep(1) +    plane.set_props({ +        "FB_ID": fb.id, +        "CRTC_ID": crtc.id, +        "SRC_W": fb.width << 16, +        "SRC_H": fb.height << 16, +        "CRTC_W": fb.width, +        "CRTC_H": fb.height, +        "zorder": z, +    }) + +    input("press enter\n")  def test_am4_normal_trans_dst():      fbs.append(pykms.DumbFramebuffer(card, w, h, "XR24")) @@ -129,7 +177,7 @@ def test_am4_normal_trans_dst():          "alpha_blender": 0,      }) -    time.sleep(1) +    print("Purple bg. Green, red, white boxes.")      plane = planes[0]      fb = fbs[0] @@ -142,7 +190,9 @@ def test_am4_normal_trans_dst():          "CRTC_H": h,      }) -    time.sleep(1) +    input("press enter\n") + +    print("Blue bg on left, covering green, red, white boxes. Purple bg on right.")      plane = planes[1]      fb = fbs[1] @@ -159,7 +209,9 @@ def test_am4_normal_trans_dst():          "CRTC_H": fb.height,      }) -    time.sleep(1) +    input("press enter\n") + +    print("Blue bg on left, covering green and red boxes. Cyan bg on right, covering white box.")      plane = planes[2]      fb = fbs[2] @@ -176,6 +228,8 @@ def test_am4_normal_trans_dst():          "CRTC_H": fb.height,      }) +    input("press enter\n") +  def test_am4_normal_trans_src():      fbs.append(pykms.DumbFramebuffer(card, w, h, "XR24"))      fbs.append(pykms.DumbFramebuffer(card, w // 2, h, "XR24")) @@ -321,11 +375,16 @@ def test_am4_alpha_trans_src():      }) - -#test_am5_trans_dest() -test_am5_trans_src() -#test_am4_normal_trans_dst() -#test_am4_normal_trans_src() -#test_am4_alpha_trans_src() - -input("press enter to exit\n") +if TEST == 1: +    test_am5_trans_dest() +elif TEST == 2: +    test_am5_trans_src() +elif TEST == 3: +    test_am4_normal_trans_dst() +elif TEST == 4: +    test_am4_normal_trans_src() +elif TEST == 5: +    test_am4_alpha_trans_src() +else: +    print("Bad test number") +    exit(-1)  | 
