И так супер коротко, есть декодер, он умеет отдать картинку. Есть display controller он готовит уже всё, чтобы отдать на eDP контроллер. Нужно сделать так, чтобы при просмотре видео - НЕ задействовать GPU.
Достигается это тем, что видео должно быть без перекрывающих его элементов включая курсор, тогда декодер может в чистую отдать картинку, а если на экране больше ничего не меняется и не требует пересчёта картинки у нас выходит низкое потребление ибо GPU спит
Скажу сразу в Gnome не работает. В KDE только с плазмы 6.5 под флагами начало.
В niri где и тестировал - работает если в конфиг добавить
debug {
enable-overlay-planes
}И ура-ура
[FB:547] NV12 little-endian (0x3231564e),0x100000000000009,1920x1080,
visible=visible, src=1920.000000x1080.000000+0.000000+0.000000,
dst=1398x786+1454+76
Видео проигрывается, ровно так, что декодер напрямую гонит картинку. GPU спит и вместо 11Вт получаем 8Вт!
...
А и да AppNap тоже написал на коленке, но у него дикая и тупая агресивность сейчас, так что не рассказывал и не использую сижу изучаю дальше. Но MVP работает, да только в Niri снова - тут есть API, как только окно уходит из видимости приложение фризится, а таймеры улетают к 90 сек. Работает только то, на что смотрим. При этом на пустом экране можно резко получить 30Вт компайла -> 2Вт простоя... есть нюанс - компайл в этот момент встал. Вот это сижу и почитываю, как сделать адекватно :)
Экономьте электроны!
