diff options
Diffstat (limited to 'py')
| -rw-r--r-- | py/gamma.py | 39 | ||||
| -rw-r--r-- | py/helpers.py | 19 | 
2 files changed, 51 insertions, 7 deletions
| diff --git a/py/gamma.py b/py/gamma.py new file mode 100644 index 0000000..69722ce --- /dev/null +++ b/py/gamma.py @@ -0,0 +1,39 @@ +#!/usr/bin/python3 + +import pykms +from helpers import * + +# This hack makes drm initialize the fbcon, setting up the default connector +card = pykms.Card() +card = 0 + +card = pykms.Card() + +conn = card.get_first_connected_connector() +mode = conn.get_default_mode() +crtc = conn.get_current_crtc() + +arr = bytearray(256*2*4) +view = memoryview(arr).cast("H") + +for i in range(256): +    g = round(255 * pow(i / 255.0, 1 / 2.2)) + +    view[i * 4 + 0] = g << 8 +    view[i * 4 + 1] = g << 8 +    view[i * 4 + 2] = g << 8 +    view[i * 4 + 3] = 0 + +gamma = pykms.Blob(card, arr); + +set_props(crtc, { +    "GAMMA_LUT": gamma.id, +}) + +input("press enter to remove gamma\n") + +set_props(crtc, { +    "GAMMA_LUT": 0, +}) + +input("press enter to exit\n") diff --git a/py/helpers.py b/py/helpers.py index c523523..456efcd 100644 --- a/py/helpers.py +++ b/py/helpers.py @@ -12,13 +12,18 @@ def props(o):          print("%-15s %d (%#x)" % (prop.name, propval, propval))  def set_props(ob, map): -    areq = pykms.AtomicReq(ob.card) - -    for key, value in map.items(): -        areq.add(ob, key, value) - -    if areq.commit_sync() != 0: -        print("commit failed") +    if ob.card.has_atomic: +        areq = pykms.AtomicReq(ob.card) + +        for key, value in map.items(): +            areq.add(ob, key, value) + +        if areq.commit_sync() != 0: +            print("commit failed") +    else: +        for propid,propval in map.items(): +            if ob.set_prop_value(propid, propval) != 0: +                print("setting property failed")  red = pykms.RGB(255, 0, 0)  green = pykms.RGB(0, 255, 0) | 
