Commit Graph
356 Commits
Author SHA1 Message Date
Roman MakarovandIlya Zlobintsev accd313399 fix: amd tolerate emtpy power cap (#1234)
* fix: amd tolerate emtpy power cap

* chore: add rx6800m test data with broken power1_cap

---------

Co-authored-by: Ilya Zlobintsev <ilya.zl@protonmail.com>
2026-10-24 13:15:02 +03:00
Ilya Zlobintsev 8f9fc60ede chore: update most dependencies (#1237)
* chore: cargo update

* chore: update most dependencies

* chore: bump nightly version

* fix: missing feature
2026-10-24 13:08:56 +03:00
Ilya Zlobintsev 705cc8e667 fix: don't keep waiting for events from an exited buscctl command in profile watcher (#1226) 2026-10-11 10:22:30 +03:00
Ilya Zlobintsev bd9aa0c1df feat: add UMA carveout option for AMD iGPUs (#1219)
* feat: UMA carveout daemon option

* feat: working UI

* chore: switch to released lib
2026-10-04 13:44:54 +03:00
Roman Makarov a844b05f2c fix: use nvapi for vram/hotspot temp channel mapping (#1216)
* add struct

* use dynamic channel info to pick the right vram/hotspot channel

* get mask from get_info to avoid extra nvapi call

* move get_info from stats poll to new

* fix type
2026-10-02 16:36:45 +03:00
Roman Makarov 7145befe5e fix: simplify amd apply config (#1175)
* wip

* use pl manual during OD changes

* add snapshot with non-standard p-lvl

* upd dep
2026-09-12 21:56:09 +03:00
Ilya Zlobintsev 4f665ac48f fix: only report dumpable VBIOS when debugfs path actually exists 2026-09-05 11:16:55 +03:00
Ilya Zlobintsev ac7181e8c9 chore: update 5700xt test data 2026-09-05 11:12:09 +03:00
Ilya Zlobintsev 7180e9e0b1 refactor: abstract and mock AMD DRM, expand mock to cover Vulkan/OpenCL (#1189)
* feat: abstract AMD DRM

* chore: add more test data

* feat: use same mock info for vulkan and opencl

* chore: drop commented code
2026-09-02 18:35:14 +03:00
Roman Makarov fc455a6214 chore: use convetional names for nvapi calls (#1187) 2026-08-30 17:13:26 +03:00
Ilya Zlobintsev 4d02610d46 refactor: abstract away intel DRM logic, add a mock implementation (#1182)
* refactor: put intel drm logic behind a trait, add mock

* chore: use full device snapshot

* feat: make mock usable not just from tests
2026-08-29 17:48:57 +03:00
Ilya Zlobintsev 40dcf29841 fix: use pidfd for polkit auth if possible, patch zbus_polkit 2026-08-28 22:59:50 +03:00
Roman Makarov 3763eabcfe fix: update list of apu devices which need p-levels workaround (#1174) 2026-08-25 20:09:12 +03:00
Ilya Zlobintsev df20b606de feat: show additional clock domains in UI (#1172)
* feat: show additional clock domains in UI

* fix: tests
2026-08-23 18:14:33 +03:00
Roman Makarov 6f02740b2f fix: swtich nvidia V/F curve to offsets (#1161)
* wip

* clean up

* upd comment

* fix vfcurve flip to enabled

* fmt

* rename old curve_is_configured

* move enable edit checkbox from VFCurve to OC panel

* cleanup tests

* set offset 0 on curve reset

* add defauilt to freq_offset

* bail if vf_curve is invalid or not editable

* hide apply/default buttons on ro curve

* fix curve margins

* vfcurve - show info that editing is disabled

* move top vf curve ceiling a bit

* center vf-curve-editing label

* fix flipping edit vfcurve checkbox

* easen up warning

* add abs to offset migration

* fix point_min_offset_mhz calculation

* don't let offset to be same or bigger than basefreq

* fix test
2026-08-23 16:16:21 +03:00
Roman Makarov c9fa4879a2 feat: support AMD profile performance-levels (#1170)
* feat: support AMD profile performance-levels

* add snapshot test
2026-08-22 23:34:51 +03:00
Davi Henrique LinharesandIlya Zlobintsev 238e315b81 feat: fan control for Intel Xe (needs patched kernel) (#1108)
* marking Intel with the fan control flag, if available

* static fan RPM control for Intel

* firmware fan control and checking if we can atually control the fans

* improved the messages

* fan curve suport for Intel

* consuming the result

* getting the fan curve from hwmon for Intel, if available

* getting the fan static speed from hwmon for Intel, if available

* getting the fan control mode from hwmon for Intel, if available

* checking if the fan control is enabled for Intel

* checking the curve points amount with the expose controllable points for Intel instead of hardcoding

* applying the fan settings to all exposed fans for Intel

* consuming the result

* applying the Intel fan curve in its own function

* applying the Intel fans static speed in its own function

* properly validating the fan curve for Intel

* getting the max fan speed for Intel, if available

* setting the remaining points based on the last point for Intel

* auto completing the missing curve points on Intel

* omitting points we probably auto completed for Intel

* properly auto completing the fan curve points for Intel

* only omitting the last fan curve points for Intel

* cargo fmt on intel.rs

* cargo clippy --fix --lib -p lact-daemon

* removed the "Option::" prefix

* removed the debug code

* using a result on "apply_fan_curve" and "is_valid_fan_curve"

* improved the Result handling in "apply_fan_curve"

* cargo fmt

* refactor: code cleanup, truncate read curve off configured one

* chore: minor cleanup

* added the get_hwmon_fan_curve and get_hwmon_fan_curve_points and renamed the old get_hwmon_fan_curve to get_truncated_hwmon_fan_curve

The new get_hwmon_fan_curve returns the fan curve from hwmon as is.
The get_hwmon_fan_curve_points returns a Vec with the hwmon fan curve as is, used on both get_hwmon_fan_curve and get_truncated_hwmon_fan_curve.
The get_truncated_hwmon_fan_curve returns the fan curve from hwmon, but some points may be ommited

* chore: update b580 test data with the fan curve

* feat: smarter fan curve truncation

* returning a single points if all points are the same, Intel xe

If all points are the same speed, we display the current FanControlMode as Static, so we can safely display one point in the curve

* safely getting the first point

---------

Co-authored-by: Ilya Zlobintsev <ilya.zl@protonmail.com>
2026-08-22 15:04:36 +03:00
Ilya Zlobintsev 2aae677d0e fix: only create new file when writing debug snapshot 2026-08-19 17:54:05 +03:00
Ilya Zlobintsev d0478fe42c fix: pass uid from unix socket creds instead of inferring from pid in polkit checks 2026-08-19 17:42:08 +03:00
Davi Henrique LinharesandIlya Zlobintsev 032f77962d fix: ignore intel_pmt on test snapshots (#1165)
* ignoring the intel_pmt on snapshots

For some reason, when LACT tries to read that file, the Linux kernel decides to crash. Tested on 7.1.5, 7.2-rc4, 7.2-rc5

* chore: fmt

---------

Co-authored-by: Ilya Zlobintsev <ilya.zl@protonmail.com>
2026-08-19 09:22:02 +03:00
Ilya Zlobintsev 2d8c36eaa8 chore: update a380-xe snapshot data 2026-08-17 13:42:20 +03:00
Ilya Zlobintsev 811a6af062 feat: report clockspeed of extra clock domains on nvidia (#1155) 2026-08-17 12:27:07 +03:00
Roman Makarov bd687203e2 feat: fmt gpu name in gpu-picker (#1157)
* feat: fmt gpu name in gpu-picker

* move implementation to daemon

* move to schema

* add Radeon/Geforce prefix back

* remove from info_elements
2026-08-17 10:49:12 +03:00
Ilya Zlobintsev 3e7d0fe87f chore: fix powerset feature compilation 2026-08-08 10:10:49 +03:00
Ilya Zlobintsev cecf05a32f chore: improve settings apply tests
removes some of the error logs, and makes the 7900xtx test actually
generate all of the write commands.
2026-08-06 12:12:02 +03:00
Roman Makarov 3046d90d13 perf: update stats micro optimizations (#1137)
* perf: stats update micro optimizations

* fmt
2026-08-05 23:59:06 +03:00
Roman Makarov 7002854313 refactor: nvidia-voltage-boost (#1134)
* refactor/nvidia-voltage-boost

* remove the memsize asserts since they might be misleading
2026-08-03 09:39:55 +03:00
Roman Makarov 8342f83d34 feat: support nvidia voltage boost (#1133)
* feat: implement voltage boost for nvidia

* make NvApiVoltageBoost private

* fix typo

* cleanups

* switch from tooltip to popover
2026-08-02 23:00:10 +03:00
Ilya Zlobintsev da9fa95517 chore: exclude mtd from debug snapshots to make it faster on intel 2026-08-02 12:46:56 +03:00
Ilya Zlobintsev bc6acedbec chore: clippy fixes 2026-08-02 12:02:50 +03:00
Ilya Zlobintsev c20fc5879b chore: accumulate GPU reload events centrally (#1129)
* chore: accumulate GPU reload events centrally

* chore: bump drm event collection interval

* fix: test

* chore: use typed login manager dbus proxy, only trigger on resume event
2026-08-01 13:13:17 +03:00
Ilya Zlobintsev b3efeb273f feat: new service setup GUI (#1043)
* feat: WIP service setup GUI

* fix: avoid crash when closing dialog with app already running

* wip

* feat: make it more usable

* wip logs

* feat: working logs display

* feat: use new dialog for version mismatch

* chore: cleanup

* fix: tcp functionality

* feat: handle setup errors

* perf: avoid refetching system info

* fix test
2026-07-26 18:54:32 +03:00
Ilya Zlobintsev 504d300d02 feat: add detach/reattach option to temporarily ignore a GPU (#1123)
* feat: add detach/reattach option to temporarily ignore a GPU

* chore: require explicit gpu id arg for detach

* feat: keep NVML and NvAPI behind a refcount instead of global init

* fix: clippy
2026-07-25 19:01:59 +03:00
Ilya Zlobintsev 2d7c5c23c6 feat: add per-memory-chip temperatures for Nvidia GDDR6X/GDDR7 (#1125)
* feat: GDDR6x per-chip sensors

* feat: handle GDDR7, better labels

* chore: improve labeling

* fix: ui test
2026-07-24 22:01:51 +03:00
Ilya Zlobintsev bc2d598eab feat: add hotspot sensor read for blackwell (#1122) 2026-07-20 23:53:08 +03:00
Roman MakarovandIlya Zlobintsev 852b3e5db6 chore: update rust deps (#1110)
* chore: update rust deps

* fix

* chore: add fix for proc-macro-error-2 warning

* fix: re-update bitflags

---------

Co-authored-by: Ilya Zlobintsev <ilya.zl@protonmail.com>
2026-07-12 23:24:38 +03:00
Roman MakarovandIlya Zlobintsev 41c4f3a999 feat: support nvidia powermizer (#1092)
* update nvml bindings

* add basic power-mizer get/set

* upd generated-sources

* simplify schema

* finish rename

* gui: drop nvidia_power_mizer_modes

* controller: remove get_nvidia_power_mizer_info

* minor clean-ups

* hacky fix of tests

* use correct repo url for nvml-wrapper

* controller: rollback to Auto when no value is supplied

* gui: handle set_model reset on each tick

* chore: extremely minor cleanup

---------

Co-authored-by: Ilya Zlobintsev <ilya.zl@protonmail.com>
2026-07-12 21:42:20 +03:00
Ilya Zlobintsev 4bf5bc6166 feat: use polkit auth for admin actions (#1109) 2026-07-10 23:00:34 +03:00
Roman Makarov 2f6bbfa3bc fix: add workaround for amd broken p-state indexes (#1097)
* fix: add workaround for amd broken p-state indexes

* upd snapshot

* reflect apply behaviour in rx9070 snapshot
2026-07-05 08:28:30 +03:00
Ilya Zlobintsev 72800bb5ba chore: update vendored nvidia headers and vulkan spec, add makefile entries for update (#1105)
* chore: update vendored nvidia headers and vulkan spec, add makefile actions for update

* chore: avoid printing for unchanged files

* chore: clean up makefile
2026-07-03 18:11:18 +03:00
Ilya Zlobintsev acefe5b4d6 feat: add GTT usage bar (#1053)
* refactor: make size group less verbose

* feat: add GTT usage indicator for AMD

* feat: make GTT stat available in the graphs
2026-07-01 22:22:24 +03:00
Ilya Zlobintsev 4c09a99c01 chore: remove system uptime check on startup (#1102) 2026-06-30 00:07:39 +03:00
Roman MakarovandIlya Zlobintsev 3ea235aca1 fix: blackwell nvapi temps parsing (#1096)
* fix: blackwell nvapi temps parsing

* chore: make the checks more reliable

---------

Co-authored-by: Ilya Zlobintsev <ilya.zl@protonmail.com>
2026-06-29 20:53:29 +03:00
Roman Makarov 45f962b56c fix: nvidia displayport2 bandwidth calculation (#1090)
* fix: nvidia displayport2 bandwidth calculation fix

* move vendor specific heuristics to relevant controllers

* handle case where linkBW and dp2LinkBW are 0

* Revert "handle case where linkBW and dp2LinkBW are 0"

This reverts commit 7c805f6ebf.
2026-06-25 22:50:20 +03:00
Roman MakarovandIlya Zlobintsev 36e273fc90 feat: de-couple nvidia target temp from amd pmfw target temp (#1086)
* migrate schema/config

* gui: de-couple nvidia and amd target temp

* de-couple reset

* fix tests

* feat: rework target temperature setting

* chore: revert unnecessary rename

* chore: avoid adding new option to SetFanControl call

---------

Co-authored-by: Ilya Zlobintsev <ilya.zl@protonmail.com>
2026-06-24 22:43:27 +03:00
Ilya Zlobintsev a486fb88bb chore: supress clippy warning 2026-06-23 12:10:03 +03:00
Ilya Zlobintsev 8b5523db4e feat: QOL for displays info (#1085)
* feat: show message when no displays are detected

* feat: avoid showing 0 when dp info cannot be read
2026-06-23 12:08:44 +03:00
Ilya Zlobintsev 1fe2f52fb2 feat: handle VF curve without vf_tuple_base (Turing) (#1066)
* feat: handle VF curve without vf_tuple_base (Turing) (WIP)

* feat: handle both paths

* fix: use saved base VF curve instead of calculating from offsets when base is unsupported

* chore: force reset curve before saving it as base
2026-06-23 11:24:35 +03:00
Ilya Zlobintsev 0052c47ce3 fix: automatically clamp power cap to the allowed range on AMD (#1080) 2026-06-22 17:53:58 +03:00
Ilya Zlobintsev d4c2025c99 fix: use host PATH variable when enabling AMD OD from inside flatpak (#1070) 2026-06-20 22:00:43 +03:00