Example #1
0
def test_am5_trans_src():
    fbs.append(pykms.DumbFramebuffer(card, w, h, "XR24"))
    fbs.append(pykms.DumbFramebuffer(card, w, h, "XR24"))

    fb = fbs[0]
    pykms.draw_rect(fb, 0, 0, fb.width, fb.height, white)
    pykms.draw_rect(fb, 200, 200, 100, 100, red)
    pykms.draw_rect(fb, fb.width - 300, 200, 100, 100, green)

    fb = fbs[1]
    pykms.draw_rect(fb, 0, 0, fb.width, fb.height, cyan)
    pykms.draw_rect(fb, 100, 100, 500, 500, purple)

    set_props(
        crtc, {
            "trans-key-mode": 2,
            "trans-key": purple.rgb888,
            "background": 0,
            "alpha_blender": 0,
        })

    plane = 0

    for i in range(0, 2):
        print("set crtc {}, plane {}, fb {}".format(crtc.id, planes[i].id,
                                                    fbs[i].id))

        plane = planes[i]
        fb = fbs[i]
        set_props(
            plane, {
                "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,
            })

        time.sleep(1)
Example #2
0
def test_am5_trans_src():
    fbs.append(pykms.DumbFramebuffer(card, w, h, "XR24"))
    fbs.append(pykms.DumbFramebuffer(card, w, h, "XR24"))

    fb = fbs[0]
    pykms.draw_rect(fb, 0, 0, fb.width, fb.height, white)
    pykms.draw_rect(fb, 200, 200, 100, 100, red)
    pykms.draw_rect(fb, fb.width - 300, 200, 100, 100, green)

    fb = fbs[1]
    pykms.draw_rect(fb, 0, 0, fb.width, fb.height, cyan)
    pykms.draw_rect(fb, 100, 100, 500, 500, purple)

    set_props(crtc, {
        "trans-key-mode": 2,
        "trans-key": purple.rgb888,
        "background": 0,
        "alpha_blender": 0,
    })

    plane = 0

    for i in range(0,2):
        print("set crtc {}, plane {}, fb {}".format(crtc.id, planes[i].id, fbs[i].id))

        plane = planes[i]
        fb = fbs[i]
        set_props(plane, {
            "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,
        })

        time.sleep(1)
Example #3
0
def test_am4_alpha_trans_src():
    fbs.append(pykms.DumbFramebuffer(card, w, h, "XR24"))
    fbs.append(pykms.DumbFramebuffer(card, w // 2, h, "XR24"))
    fbs.append(pykms.DumbFramebuffer(card, w // 2, h, "XR24"))

    fb = fbs[0]
    pykms.draw_rect(fb, 0, 0, w, h, purple)
    pykms.draw_rect(fb, 200, 100, 50, 200, red)
    pykms.draw_rect(fb, w - 200 - 50, 100, 50, 200, green)

    fb = fbs[1]
    pykms.draw_rect(fb, 0, 0, fb.width, fb.height, blue)
    pykms.draw_rect(fb, 100, 100, fb.width - 200, fb.height - 200, purple)

    fb = fbs[2]
    pykms.draw_rect(fb, 0, 0, fb.width, fb.height, cyan)
    pykms.draw_rect(fb, 100, 100, fb.width - 200, fb.height - 200, purple)

    set_props(crtc, {
        "trans-key-mode": 1,
        "trans-key": purple.rgb888,
        "background": 0,
        "alpha_blender": 1,
    })

    time.sleep(1)

    plane = planes[0]
    fb = fbs[0]
    set_props(plane, {
        "FB_ID": fb.id,
        "CRTC_ID": crtc.id,
        "SRC_W": fb.width << 16,
        "SRC_H": fb.height << 16,
        "CRTC_W": w,
        "CRTC_H": h,
    })

    time.sleep(1)

    plane = planes[1]
    fb = fbs[1]
    set_props(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,
    })

    time.sleep(1)

    plane = planes[2]
    fb = fbs[2]
    set_props(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": w - fb.width,
        "CRTC_Y": 0,
        "CRTC_W": fb.width,
        "CRTC_H": fb.height,
    })
Example #4
0
if len(planes) != 3:
    print("Need 3 planes!")
    exit(1)

disable_planes(card)

w = mode.hdisplay
h = mode.vdisplay

fbs = []

for i in range(len(planes)):
    fbs.append(pykms.DumbFramebuffer(card, w, h, "AR24"))

pykms.draw_rect(fbs[0], 50, 50, 200, 200, pykms.RGB(128, 255, 0, 0))
pykms.draw_rect(fbs[1], 150, 50, 200, 200, pykms.RGB(128, 0, 255, 0))
pykms.draw_rect(fbs[2], 50, 150, 200, 200, pykms.RGB(128, 0, 0, 255))

set_props(crtc, {
    "trans-key-mode": 0,
    "trans-key": 0,
    "background": 0,
    "alpha_blender": 1,
})

for i in range(len(planes)):
    plane = planes[i]
    fb = fbs[i]

    print("set crtc {}, plane {}, fb {}".format(crtc.id, p.id, fbs[i].id))
Example #5
0
def test_am5_trans_dest():
    fbs.append(pykms.DumbFramebuffer(card, w, h, "XR24"))
    fbs.append(pykms.DumbFramebuffer(card, w, h, "XR24"))

    fb = fbs[0]
    pykms.draw_rect(fb, 0, 0, fb.width, fb.height, pykms.purple)
    pykms.draw_rect(fb, 100, 100, 100, 200, pykms.green)
    pykms.draw_rect(fb, 300, 100, 100, 200, pykms.red)
    pykms.draw_rect(fb, 500, 100, 100, 200, pykms.white)

    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)

    crtc.set_props({
        "trans-key-mode": 1,
        "trans-key": pykms.purple.rgb888,
        "background": 0,
        "alpha_blender": 0,
    })

    plane = 0

    for i in range(0, 2):
        print("set crtc {}, plane {}, fb {}".format(crtc.id, planes[i].id,
                                                    fbs[i].id))

        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,
        })

        time.sleep(1)
Example #6
0
def test_am4_alpha_trans_src():
    fbs.append(pykms.DumbFramebuffer(card, w, h, "XR24"))
    fbs.append(pykms.DumbFramebuffer(card, w // 2, h, "XR24"))
    fbs.append(pykms.DumbFramebuffer(card, w // 2, h, "XR24"))

    fb = fbs[0]
    pykms.draw_rect(fb, 0, 0, w, h, pykms.purple)
    pykms.draw_rect(fb, 200, 100, 50, 200, pykms.red)
    pykms.draw_rect(fb, w - 200 - 50, 100, 50, 200, pykms.green)

    fb = fbs[1]
    pykms.draw_rect(fb, 0, 0, fb.width, fb.height, pykms.blue)
    pykms.draw_rect(fb, 100, 100, fb.width - 200, fb.height - 200,
                    pykms.purple)

    fb = fbs[2]
    pykms.draw_rect(fb, 0, 0, fb.width, fb.height, pykms.cyan)
    pykms.draw_rect(fb, 100, 100, fb.width - 200, fb.height - 200,
                    pykms.purple)

    crtc.set_props({
        "trans-key-mode": 1,
        "trans-key": pykms.purple.rgb888,
        "background": 0,
        "alpha_blender": 1,
    })

    time.sleep(1)

    plane = planes[0]
    fb = fbs[0]
    plane.set_props({
        "FB_ID": fb.id,
        "CRTC_ID": crtc.id,
        "SRC_W": fb.width << 16,
        "SRC_H": fb.height << 16,
        "CRTC_W": w,
        "CRTC_H": h,
    })

    time.sleep(1)

    plane = planes[1]
    fb = fbs[1]
    plane.set_props({
        "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,
    })

    time.sleep(1)

    plane = planes[2]
    fb = fbs[2]
    plane.set_props({
        "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": w - fb.width,
        "CRTC_Y": 0,
        "CRTC_W": fb.width,
        "CRTC_H": fb.height,
    })
Example #7
0
    def move_stripe(self):
        if self.first_run:
            self.new_color()
            self.first_run = False

        fb = self.fbs[self.draw_buf]

        old_box_y = self.old_pos_y
        self.old_pos_y = self.pos_y
        change_speed = 0

        self.pos_y = int(self.pos_y + (self.dir_y * self.speed_y))

        if self.pos_y < 0:
            self.pos_y = 0
            change_speed = 1
            self.dir_y = 1
        elif self.pos_y > (self.fbY - self.bar_size):
            self.pos_y = self.fbY - self.bar_size
            change_speed = 1
            self.dir_y = -1

        if change_speed == 1:
            self.new_color()
            self.speed_y = random.randrange(1, 10, 1)

        # Erease the old box
        if old_box_y >= 0:
            pykms.draw_rect(fb, 0, old_box_y, self.fbX, self.bar_size, black)

        pos_y = self.pos_y
        pykms.draw_rect(fb, 0, pos_y, self.fbX, 5, self.color3)
        pos_y += 5
        pykms.draw_rect(fb, 0, pos_y, self.fbX, 10, self.color2)
        pos_y += 10
        pykms.draw_rect(fb, 0, pos_y, self.fbX, 15, self.color)
        pos_y += 15
        pykms.draw_rect(fb, 0, pos_y, self.fbX, 10, self.color2)
        pos_y += 10
        pykms.draw_rect(fb, 0, pos_y, self.fbX, 5, self.color3)
Example #8
0
def test_am5_trans_dest():
    fbs.append(pykms.DumbFramebuffer(card, w, h, "XR24"))
    fbs.append(pykms.DumbFramebuffer(card, w, h, "XR24"))

    fb = fbs[0]
    stepX = fb.width // 7
    stepY = fb.height // 5;

    pykms.draw_rect(fb, 0, 0, fb.width, fb.height, pykms.purple)
    pykms.draw_rect(fb, stepX, stepY,
                    stepX, fb.height - (stepY * 2),
                    pykms.green)
    pykms.draw_rect(fb, stepX * 3, stepY,
                    stepX, fb.height - (stepY * 2),
                    pykms.red)
    pykms.draw_rect(fb, stepX * 5, stepY,
                    stepX, fb.height - (stepY * 2),
                    pykms.white)

    fb = fbs[1]
    pykms.draw_rect(fb, 0, 0,
                    fb.width, fb.height,
                    pykms.cyan)
    pykms.draw_circle(fb, (stepX * 3) + (stepX // 2), fb.height // 2,
                      (fb.height // 2) - stepY,
                      pykms.yellow)

    crtc.set_props({
        "trans-key-mode": 1,
        "trans-key": pykms.purple.rgb888,
        "background": 0,
        "alpha_blender": 0,
    })

    print("Purple bg. Green, red, white 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,
        "zpos": z,
    })

    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,
        "zpos": z,
    })

    input("press enter\n")
Example #9
0
def test_am4_alpha_trans_src():
    fbs.append(pykms.DumbFramebuffer(card, w, h, "XR24"))
    fbs.append(pykms.DumbFramebuffer(card, w // 2, h, "XR24"))
    fbs.append(pykms.DumbFramebuffer(card, w // 2, h, "XR24"))

    fb = fbs[0]
    halfX = fb.width // 2
    stepX = (fb.width // 2) // 5;
    stepY = fb.height // 5;

    pykms.draw_rect(fb, 0, 0, w, h, pykms.purple)
    pykms.draw_rect(fb, stepX * 2, stepY * 2,
                    halfX - (stepX * 4), fb.height - (stepY * 4),
                    pykms.red)
    pykms.draw_rect(fb, halfX + stepX * 2, stepY * 2,
                    halfX - (stepX * 4), fb.height - (stepY * 4),
                    pykms.green)

    fb = fbs[1]
    pykms.draw_rect(fb, 0, 0, fb.width, fb.height, pykms.blue)
    pykms.draw_rect(fb, stepX, stepY,
                    fb.width - (stepX * 2), fb.height - (stepY * 2),
                    pykms.purple)

    fb = fbs[2]
    pykms.draw_rect(fb, 0, 0, fb.width, fb.height, pykms.cyan)
    pykms.draw_rect(fb, stepX, stepY,
                    fb.width - (stepX * 2), fb.height - (stepY * 2),
                    pykms.purple)

    crtc.set_props({
        "trans-key-mode": 1,
        "trans-key": pykms.purple.rgb888,
        "background": 0x666666,
        "alpha_blender": 1,
    })

    print("grey background")
    input("press enter\n")

    plane = planes[0]
    fb = fbs[0]
    plane.set_props({
        "FB_ID": fb.id,
        "CRTC_ID": crtc.id,
        "SRC_W": fb.width << 16,
        "SRC_H": fb.height << 16,
        "CRTC_W": w,
        "CRTC_H": h,
    })

    print("grey background, red and green boxes")
    input("press enter\n")

    plane = planes[1]
    fb = fbs[1]
    plane.set_props({
        "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,
    })

    print("left side: blue bg, purple box, red box inside purple. right side: unchanged")
    input("press enter\n")

    plane = planes[2]
    fb = fbs[2]
    plane.set_props({
        "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": w - fb.width,
        "CRTC_Y": 0,
        "CRTC_W": fb.width,
        "CRTC_H": fb.height,
    })

    print("left side: unchanged. right side: cyan bg, purple box, green box inside purple.")
    input("press enter\n")
Example #10
0
def test_am4_normal_trans_src():
    fbs.append(pykms.DumbFramebuffer(card, w, h, "XR24"))
    fbs.append(pykms.DumbFramebuffer(card, w, h, "XR24"))

    fb = fbs[0]
    halfX = fb.width // 2
    stepX = (fb.width // 2) // 5;
    stepY = fb.height // 5;

    pykms.draw_rect(fb, 0, 0, fb.width, fb.height, pykms.white)
    pykms.draw_rect(fb, stepX * 2, stepY * 2,
                    halfX - (stepX * 4), fb.height - (stepY * 4),
                    pykms.red)
    pykms.draw_rect(fb, halfX + stepX * 2, stepY * 2,
                    halfX - (stepX * 4), fb.height - (stepY * 4),
                    pykms.green)

    fb = fbs[1]
    pykms.draw_rect(fb, 0, 0, fb.width, fb.height, pykms.cyan)
    pykms.draw_rect(fb, stepX, stepY,
                    fb.width - (stepX * 2), fb.height - (stepY * 2),
                    pykms.purple)

    crtc.set_props({
        "trans-key-mode": 2,
        "trans-key": pykms.purple.rgb888,
        "background": 0,
        "alpha_blender": 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,
        "zpos": z,
    })

    input("press enter\n")

    print("Cyan bg. Big white box, containing red and green boxes.")

    plane = planes[1]
    fb = fbs[1]
    z = 2

    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,
        "zpos": z,
    })

    input("press enter\n")
Example #11
0
    rootplane = res.reserve_primary_plane(crtc, pykms.PixelFormat.XRGB8888)
    rootplane_list.append(rootplane)

card.disable_planes()

print('Using the following connectors:')
for i in range(2):
    print(' {}: {} ({}x{})'.format(conn_list[i].idx, conn_list[i].fullname,
                                   mode_list[i].hdisplay,
                                   mode_list[i].vdisplay))

colors.append(pykms.red)
colors.append(pykms.green)

for i in range(2):
    pykms.draw_rect(fb_list[i], 0, 0, src_w, src_h, colors[i])

for i in range(2):
    req = pykms.AtomicReq(card)
    modeb = mode_list[i].to_blob(card)
    req.add(conn_list[i], 'CRTC_ID', crtc_list[i].id)
    req.add(crtc_list[i], {'ACTIVE': 1, 'MODE_ID': modeb.id})
    req.add(
        rootplane_list[i], {
            'FB_ID': fb_list[i].id,
            'CRTC_ID': crtc_list[i].id,
            'SRC_W': src_w << 16,
            'SRC_H': src_h << 16,
            'CRTC_W': src_w,
            'CRTC_H': src_h
        })
Example #12
0
if len(planes) != 3:
    print("Need 3 planes!")
    exit(1)

disable_planes(card)

w = mode.hdisplay
h = mode.vdisplay

fbs=[]

for i in range(len(planes)):
    fbs.append(pykms.DumbFramebuffer(card, w, h, "AR24"))

pykms.draw_rect(fbs[0], 50, 50, 200, 200, pykms.RGB(128, 255, 0, 0))
pykms.draw_rect(fbs[1], 150, 50, 200, 200, pykms.RGB(128, 0, 255, 0))
pykms.draw_rect(fbs[2], 50, 150, 200, 200, pykms.RGB(128, 0, 0, 255))


set_props(crtc, {
    "trans-key-mode": 0,
    "trans-key": 0,
    "background": 0,
    "alpha_blender": 1,
})

for i in range(len(planes)):
    plane = planes[i]
    fb = fbs[i]
Example #13
0
def test_am4_normal_trans_dst():
    fbs.append(pykms.DumbFramebuffer(card, w, h, "XR24"))
    fbs.append(pykms.DumbFramebuffer(card, w * 2 // 3, h, "XR24"))
    fbs.append(pykms.DumbFramebuffer(card, w * 2 // 3, h, "XR24"))

    fb = fbs[0]
    pykms.draw_rect(fb, 0, 0, w, h, purple)
    pykms.draw_rect(fb, 100, 50, 50, 200, green)
    pykms.draw_rect(fb, 200, 50, 50, 200, red)
    pykms.draw_rect(fb, 300, 50, 50, 200, white)

    fb = fbs[1]
    pykms.draw_rect(fb, 0, 0, fb.width, fb.height, blue)

    fb = fbs[2]
    pykms.draw_rect(fb, 0, 0, fb.width, fb.height, cyan)

    set_props(
        crtc, {
            "trans-key-mode": 1,
            "trans-key": purple.rgb888,
            "background": 0,
            "alpha_blender": 0,
        })

    time.sleep(1)

    plane = planes[0]
    fb = fbs[0]
    set_props(
        plane, {
            "FB_ID": fb.id,
            "CRTC_ID": crtc.id,
            "SRC_W": fb.width << 16,
            "SRC_H": fb.height << 16,
            "CRTC_W": w,
            "CRTC_H": h,
        })

    time.sleep(1)

    plane = planes[1]
    fb = fbs[1]
    set_props(
        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,
        })

    time.sleep(1)

    plane = planes[2]
    fb = fbs[2]
    set_props(
        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": w // 3,
            "CRTC_Y": 0,
            "CRTC_W": fb.width,
            "CRTC_H": fb.height,
        })
Example #14
0
    return result


card = pykms.Card()
res = pykms.ResourceManager(card)
conn = res.reserve_connector()
crtc = res.reserve_crtc(conn)
mode = conn.get_default_mode()

plane = res.reserve_generic_plane(crtc)
card.disable_planes()

crtc.set_mode(conn, mode)

fb = pykms.DumbFramebuffer(card, 256, 256, "AR24")
pykms.draw_rect(fb, 0, 0, 256, 256, pykms.RGB(255, 255, 0, 0))

print("set crtc {}, plane {}, fb {}".format(crtc.id, plane.id, fb.id))

size = 50
x = 100
y = 100

while True:
    plane.set_props({
        "FB_ID": fb.id,
        "CRTC_ID": crtc.id,
        "SRC_X": size << 16,
        "SRC_Y": size << 16,
        "SRC_W": (fb.width - size) << 16,
        "SRC_H": (fb.height - size) << 16,