Commit Graph
47 Commits
Author SHA1 Message Date
Roman Makarov 35f548bc25 feat: support amd deep sleep state (#1035)
* upd deps

* migrate to PowerLevelId

* update snapshot

* cleanup

* fix fmt
2026-05-24 00:24:12 +03:00
Ilya Zlobintsev df7c61e4cd Revert "WIP UI snapshot tests"
This reverts commit 3027d72bd5.
2026-05-22 21:47:50 +03:00
Ilya Zlobintsev 3027d72bd5 WIP UI snapshot tests 2026-05-22 21:47:42 +03:00
Ilya Zlobintsev bc4770bbe1 fix: bump amdgpu-sysfs with deep sleep pstate handling (#1021) 2026-05-14 00:04:45 +03:00
Vukašin VojinovićandIlya Zlobintsev 56e4d9d3bd chore: update dependencies (#979)
* chore: update dependencies

* chore: update flatpak sources

---------

Co-authored-by: Ilya Zlobintsev <ilya.zl@protonmail.com>
2026-04-22 18:46:10 +03:00
Vukašin VojinovićandIlya Zlobintsev 06e7931345 chore: use jiff instead of chrono (#978)
* chore: use `jiff` instead of `chrono`

* chore: update flatpak sources

---------

Co-authored-by: Ilya Zlobintsev <ilya.zl@protonmail.com>
2026-04-21 11:04:08 +03:00
Ilya Zlobintsev cbf01757f8 feat: use interleaved sclk/mclk write on GCN (#974)
* feat: use interleaved sclk/mclk write on GCN

* chore: update config snapshot
2026-04-19 18:13:25 +03:00
Ilya Zlobintsev 7fa0edd961 chore: bump dependencies 2026-02-04 11:41:26 +02:00
Ilya Zlobintsev 6c3bbdaccc feat: fetch OpenCL info through clinfo, show multiple OpenCL platforms (#836)
* feat: fetch OpenCL info through clinfo cli

* feat: support multiple OpenCL platforms in GUI

* chore: update OpenCL dependencies

* chore: update flatpak sources

* feat: add clinfo to debug snapshot

* fix: add epel repo to rhel builds

* chore: match all devices in fallback path

* feat: add clinfo to flatpak

* fix: flatpak clinfo build
2025-12-25 14:06:02 +02:00
Ilya Zlobintsev 476b6773af chore: bump easy_fuser dependency, remove override 2025-10-12 11:01:31 +03:00
Ilya Zlobintsev 3c7efdeb62 chore: bump amdgpu-sysfs 2025-09-11 07:52:38 +03:00
Alik Aslanyan cba0786004 chore: add ASAN/MSAN/TSAN/SAFESTACK to CI (#740)
* feature: Add ASAN/TSAN to CI

* feature: Add SAFESTACK sanitizer

* feature: Add MEMORY sanitizer

* fix: Try to fix thread unsafety by leaking libraries

* fix: Suppress MSAN errors and clarify their future fix

* fix: Instead of supressing fuser errors, use patched version

* fix: Properly lazily initialize controllers

* fix: Add comment explaining why there is allowlist for bindings

* fix: Upgrade used nightly

* fix: Try to fix sanitizer compilation error

* Revert "fix: Try to fix sanitizer compilation error"

This reverts commit 47514158d5.

* Revert "fix: Upgrade used nightly"

This reverts commit c3dd005c7e.

* chore: Instead of personal fork revision, use official repo

* chore: Refactor to not pass arguments for statics

* chore: Add note for loading of libs

* chore: Try to fix codecov action

* chore: Fix compilation problem
2025-09-10 21:22:30 +03:00
Alik Aslanyan 76888c6a44 chore: add Miri to CI (#733)
* fix: Revert to using serde_yaml, instead of serde_yml, as it contains UB

* chore: Fix most tests to run under Miri

* feature: Add miri to CI checks

* fix: Replace unmaintained serde_yaml with serde_norway
2025-09-04 09:31:30 +03:00
Ilya Zlobintsev 89a7edea67 feat: expose full V/F curve for GCN and RDNA1 (#676)
* feat: WIP VF curve for GCN/RDNA1

* fix: curve deserialization

* fix: use correct range for mclk

* chore: documentation and rdna1 fix

* chore: avoid resetting "show all pstates"

* fix: flatpak sources

* fix: ui on rdna1

* chore: better separators

* chore: consistent separator spacing
2025-07-27 14:30:24 +03:00
Ilya Zlobintsev 57ac91f9eb feat: initial localization support (#669)
* feat: WIP localization support

* feat: add strings for software and thermals pages

* feat: oc page localization strings

* feat: some header strings
2025-07-24 21:14:52 +03:00
Ilya Zlobintsev 6f4eccf9e3 chore: bump dependencies 2025-07-20 19:34:44 +03:00
Ilya Zlobintsev 5637792492 fix: avoid deserialization error with old vulkan format response 2025-06-27 19:47:49 +03:00
Ilya Zlobintsev c17227a8fc chore: drop workaround for broken RDNA4 clock offset format on older kernels (#599)
* chore: drop workaround for broken RDNA4 clock offset format

* chore: add 9070 non-XT test data

* chore: update flatpak sources
2025-05-29 22:04:55 +03:00
Ilya Zlobintsev 0c5c573c52 chore: replace unmaintained serde_yaml library 2025-05-24 20:31:25 +03:00
Ilya Zlobintsev 6f1ffed66b feat: persistent UI settings (#515)
* feat: persistent UI settings

* chore: switch more images to quay

* fix: add missing file

* feat: add button to reset plots to default
2025-03-29 17:42:34 +02:00
Ilya Zlobintsev 942526e348 feat: RDNA4 support (#487)
* feat: initial rdna4 support

* fix: disable writing clocks settings for now

* feat: work around misreported clock offsets, only set max offset

* feat: support new (kernel 6.15+) sclk offset format

* fix: fan curve zero page zero rpm switch

* feat: show zero rpm stop temperature on fan curve page

* feat: disable zero rpm on static control

* chore: update test snapshot

* feat: explicitly fail when setting a pmfw fan curve outside of allowed ranges

* feat: fall back to gpu_metrics for fan info when hwmon is not available

* chore: add gpu_metrics test data

* chore: fmt

* chore: update default fan curve

* chore: update 9070xt-new test data

* fix: make missing zero rpm option a non-fatal error

* chore: switch amdgpu-sysfs crate version
2025-03-16 18:40:03 +02:00
Ilya Zlobintsev 9969c1e62c fix: headless build 2025-03-06 23:28:12 +02:00
Ilya Zlobintsev 8dde4df4d1 perf: disable plot supersampling, add plot render benchmarks (#467)
* dev: add benchmark for drawing plots

* chore: update bench

* perf: disable supersampling
2025-02-10 19:25:15 +02:00
Ilya Zlobintsev 64a2d3106b feat: automatic profile switching based on rules (#424)
* feat: profile ordering

* feat: profile matching logic

* feat: automatic switching

* perf: optimize profile rules evaluation

* feat: detect gamemode process start

* feat: add benchmark for profiles matching

* perf: string interner, inline hot function

* feat: option to enable auto profile switching

* wip

* chore: change label

* chore: minor profile switching fixes

* chore: drop interner

* wip

* refactor: header messages

* feat: delay profile evaluation

* fix: moving profiles around

* feat: initial profile rule editor UI

* refactor: only create one RuleWindow instead of creating it per-row

* feat: add option to include profile watcher state in api response

* feat: ui for selecting process name

* feat: API endpoint to evaluate a single profile rule

* perf: store process names in a map to speed up profile evaluation

* feat: full configurability in the UI, many improvements

* fix: downgrade dependency to build on older rust

* fix: deleting currently active profile

* fix: populate profiles list when it's empty

* fix: pin project to rust 1.78

* fix: setting args

* fix: running benchmarks
2024-12-25 23:52:35 +02:00
Ilya Zlobintsev 3e53e0336e feat: add RDNA3 zero RPM setting (#393)
* feat: add zero rpm setting

* feat: update zero rpm interface

* chore: use upstream amdgpu-sysfs

* feat: include zero rpm files in debug snapshots

* doc: update readme

* doc: improve
2024-11-14 00:11:24 +02:00
Alik Aslanyan dbb24c5bd2 feat: improve plot rendering, use supersampling and do it in a background thread
* Threaded plot render

* Better supersampler implementation

* Better to display nothing than do long freeze

* Fix plot throttling jumping around

* Further improve rendering by using filled legend

* Spawn render thread with minimum priority

* Optimize Cairo bindings

* Simplify code as we no longer need to track initial state

Signed-off-by: Alik Aslanyan <inline0@pm.me>

* Add plotters package override for opt-level 3 in release

* Immediately react to size changes of the widget, don't wait for new data

* Scale plots in GTK, instead of Cairo for Trillinear filtering, rewrite supersampling

---------

Signed-off-by: Alik Aslanyan <inline0@pm.me>
2024-10-25 21:48:15 +03:00
Alik Aslanyan d43ec9cb82 chore: set codegen-units=1 to decrease binary size in release (#390) 2024-10-22 19:04:53 +03:00
Ilya Zlobintsev 538cea3aa5 feat: add support for multiple settings profiles (#327)
* feat: initial support for multiple settings profiles

* feat: initial profiles management support

* feat: basic profile management ui
2024-09-28 09:51:35 +03:00
Ilya Zlobintsev c08bdfef0b feat: remote management over TCP (#379)
* feat: abstract daemon client

* feat: daemon TCP listener implementation

* feat: support remote connections in the UI

* feat: make the client async

* feat: add documentation about remote management
2024-09-22 14:17:33 +03:00
Ilya Zlobintsev 92fad92e37 feat: bump amdgpu-sysfs with fix for https://github.com/ilya-zlobintsev/LACT/issues/367 2024-09-06 09:07:45 +03:00
Ilya Zlobintsev 44704a101e feat: support for power profile heuristics configuration (#361)
* feat: basic support for power profile heuristics configuration

* attempt to support RDNA heuristics

* chore: finalization
2024-08-20 22:35:16 +03:00
Ilya Zlobintsev 32e25dc269 feat: show detailed power profile information (#360) 2024-08-18 21:42:44 +03:00
Ilya Zlobintsev 4db593c73f fix: defer committing clocks/fan settings changes until all the values have been written (#340)
* feat: defer committing settings until all the values have been written

* fix: reset fan curve after setting pmfw values

* chore: switch to amdgpu-sysfs tag
2024-06-16 00:06:51 +03:00
Ilya Zlobintsev 0d675c5b3a chore: drop unused dependency 2024-06-08 11:12:19 +03:00
Ilya Zlobintsev cc06f61e52 chore: bump dependencies 2024-06-06 23:14:53 +03:00
Ilya ZlobintsevandAlik Aslanyan 50fea14480 feat: implement historical charts window (#301)
* feat: Implement graph widget in OC tab

* fix: Moved legend to lower left corner

* fix: Fix graph jumping around before getting data for 60 secs

* fix: Fix vertical part of graph jumping around

* chore: Refactoring GraphData to be it's separate struct

* chore: Rename Graph to Plot

* feat: Implement throttling histogram in Plot

* fix: Fix throttling data not being filtered out

* fix: Draw lines in front of throttling histogram and use deep orange non-transparent color

* feat: Cubic spline interpolation for plot

* chrone: Lightly refactor cubic sampling

* feat: Supersample the plot area and reconfigure sizes accordingly

* feat: WIP graphs window

* feat: improvements

* feat: add clockspeed plot

* feat: avoid using JSON to send graph info

* perf: trim clockspeed graph data

* chore: remove unused feature

* perf: use NaiveDateTime for the plot

* feat: add power usage plot

* fix: reset power plot

* dev: add benchmark for drawing plots

* perf: use raw timestamps instead of NaiveDateTime in plot

* fix: avoid running gtk tests in ci

* chore: switch away from git source for plotters-cairo

---------

Co-authored-by: Alik Aslanyan <inline0@pm.me>
2024-04-22 19:21:00 +03:00
Ilya Zlobintsev 97b1b70946 chore: bump dependencies 2024-03-03 23:17:49 +02:00
Ilya Zlobintsev 9fc0eae90a chore: set opt-level and lto for smaller binary size 2024-03-02 11:58:20 +02:00
Ilya Zlobintsev f90a817085 chore: restructure Cargo.toml files to use workspace-level dependencies 2024-02-04 23:14:50 +02:00
Ilya Zlobintsev 1aef539546 chore: strip binary in release mode 2023-09-26 09:01:21 +03:00
Ilya Zlobintsev 685a2479c5 explicitly list crates in workspace Cargo.toml (for dependabot) 2023-02-25 16:02:28 +02:00
Ilya Zlobintsev de9786b59e feat: unified binary 2023-01-05 12:45:57 +02:00
Ilya Zlobintsev 67957a4673 refactor: move lact-client to a separate crate 2023-01-01 20:28:19 +02:00
Ilya Zlobintsev d76c0fe48b feat: update dependencies 2022-11-19 15:19:08 +02:00
Ilya Zlobintsev 1a5e456c5b wip everything 2022-11-16 22:46:18 +02:00
Ilya Zlobintsev 7709a92d73 Basic GUI 2020-10-18 11:39:12 +03:00
Ilya Zlobintsev c482961c49 Init 2020-10-17 07:38:28 +03:00