diff options
-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) |