Commit Graph

211 Commits

Author SHA1 Message Date
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
ff55dc7634
fix: avoid setting pstates unless explicitly enabled in the gui (#465)
* feat: better pstate config

* fix: reset custom pstate settings

* fix: sensitivity

* fix: remove pstates from config when empty

* fix: react to configurable notify

* fix: show on start

* fix: gpu switching
2025-02-08 18:09:30 +02:00
Ilya Zlobintsev
eef331fa0c feat: make DRM mandatory for amdgpu 2025-02-05 14:36:31 +02:00
Ilya Zlobintsev
e24b0e2dad
feat: nvidia per-pstate clock offset configuration (#461)
* feat: nvidia per-pstate clock offset

* feat: update ui

* chore: update tests and doc
2025-02-02 23:00:25 +02:00
Ilya Zlobintsev
cb34adf4cb chore: bump pciid-parser and adopt breaking changes 2025-02-02 01:03:48 +02:00
Ilya Zlobintsev
1292f3f318 chore: bump version, update tests 2025-02-01 20:37:14 +02:00
Ilya Zlobintsev
4cec8e1456
refactor: make ClocksFrame a relm component (#459)
* refactor: make ClocksFrame a relm component

* fix: intel clock controls

* fix: avoid setting page size
2025-02-01 16:57:50 +02:00
Ilya Zlobintsev
00669745fd
feat: read vram clockspeed from drm so it works on IGPUs (#458) 2025-02-01 11:21:02 +02:00
Ilya Zlobintsev
3f278e7dbf fix: reload profile watcher in case of unresponsiveness after inactivity
should finally fully resolve https://github.com/ilya-zlobintsev/LACT/issues/448
2025-01-25 12:46:10 +02:00
Ilya Zlobintsev
4cff104c10 chore: bump dependencies 2025-01-24 23:00:11 +02:00
Ilya Zlobintsev
13ce56f1e6 feat: report resizeable bar on nvidia 2025-01-18 14:28:36 +02:00
Ilya Zlobintsev
48844efd46 feat: CPU accessible vram and resizeable bar reporting on intel 2025-01-18 14:15:29 +02:00
Ilya Zlobintsev
60ce6e29ae chore: better trace logging for process events 2025-01-18 10:44:19 +02:00
Ilya Zlobintsev
927e8f2b57
feat: reload GPU controller list on kernel drm events (#450)
* feat: gpu_controllers behind an RwLock

* feat: listen to netlink kernel events

* feat: wait for a period until the last drm event before reload
2025-01-17 22:50:17 +02:00
Ilya Zlobintsev
9ba8dd6588 fix: handle profile watcher reloads with gamemode reconnect correctly 2025-01-16 22:34:23 +02:00
Ilya Zlobintsev
b818f39954 chore: improve unknown initramfs type error 2025-01-14 23:44:14 +02:00
Ilya Zlobintsev
5077836352 chore: include version in snapshot file name 2025-01-14 23:39:54 +02:00
Ilya Zlobintsev
ee290f3e54
feat: proper vram size and usage reporting on intel (#442)
* chore: add vangogh test data

* feat: proper intel vram reporting

* feat: vendor all header files
2025-01-13 22:00:06 +02:00
Ilya Zlobintsev
c682c78ef3
feat!: Intel support (#439)
* WIP: add initial intel xe/i915 support

* feat: basic gpu clock configuration

* wip i915 freq controls

* fix: applying frequency settings on i915

* feat: intel DRM info

* feat: show EUs and subslices in UI

* refactor: exclude all system-dependent info in tests with conditional compilation

* chore: ignore clippy errors on bindgen file

* fix: more test fixes

* feat: generate drm bindings for xe

* wip

* refactor: GPU controller initialization

* fixes

* chore: disable currently unused xe headers

* feat: dynamically load libdrm for intel

* chore: drop println

* Merge with master

* fix: tests

* chore: avoid error in vulkan when running tests

* feat: numerous i915 additions

* feat: show fan speed

* feat: hwmon monitoring on xe

* fix: avoid crashing history graph on empty plot with throttling data

* feat: report pstates

* doc: update readme

* chore: update API docs link
2025-01-12 17:16:02 +02:00
Ilya Zlobintsev
740e38863b feat: use VRAM offset ratio on Ada, add config migration system to erase old
memory clock settings
2025-01-05 11:59:26 +02:00
Umio Yasuno
3afbcb2221
feat: dynamic loading of libdrm and libdrm_amdgpu (#438)
* feat: dynamic loading of libdrm and libdrm_amdgpu

* fix: libdrm_amdgpu_sys requires rustc 1.80.0 for exclusive_range_pattern

* feat: update libdrm_amdgpu_sys to 0.8.1

* fix: remove Rc wrapper for LibDrmAmdgpu

* pkg: bump rust version used to build packages

---------

Co-authored-by: Ilya Zlobintsev <ilya.zl@protonmail.com>
2025-01-04 15:04:07 +02:00
Ilya Zlobintsev
1d44df1652
doc: document all configuration options (#436)
* doc: add configuration docs

* add missing fields to doc

* chore: minor doc update
2024-12-31 19:30:35 +02:00
Ilya Zlobintsev
e1457cad54
fix: apply pstates correctly when clocks settings are used (#437)
* fix: apply pstates after clocks table and other settings

* fix: take vram clock ratio into account for pstates
2024-12-31 19:03:39 +02:00
Ilya Zlobintsev
08a3d5b90e dev: add test data for more RDNA2, RDNA1 and Sea Islands 2024-12-26 14:10:19 +02:00
Ilya Zlobintsev
5882cf7800 fix: save config on profile rule changes 2024-12-26 13:14:41 +02:00
Ilya Zlobintsev
f452ebed91 fix: don't check for the minimum temperature limit in custom fan curves,
as it is not reported correctly anywhere anyway
2024-12-26 13:08:59 +02:00
Ilya Zlobintsev
240d4b1477 fix: ignore temperature_key if GPU only has a single sensor 2024-12-26 13:00:44 +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
f0a878909c
feat: configurable graphs period (#431)
* chore: update test snapshot

* feat: configurable graphs period
2024-12-22 15:13:46 +02:00
Ilya Zlobintsev
7d5d6b96e5 feat: bump amdgpu-sysfs with support for RDNA3 mobile power profile parsing 2024-12-20 00:09:47 +02:00
Ilya Zlobintsev
0625b55748
test: add tests for retrieving data from various debug snapshots (#429)
* test: add tests for retrieving data from various debug snapshots

* chore: add power profiles mode to snapshot, add rx 7700s test data

* fix: update rust workflow
2024-12-18 23:55:31 +02:00
Ilya Zlobintsev
73adb1aba2 fix: always use applied clock offset values instead of reading them from NVML, bigger grace period for self-inflicted config changes 2024-11-24 16:45:25 +02:00
Ilya Zlobintsev
419814ea38 chore: bump version 2024-11-16 13:37:36 +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
Ilya Zlobintsev
27d3402d08
fix: update amdgpu-sysfs with iGPU fixes, add steam deck quirk (#407)
* feat: van gogh support

* fix: device id

* fix
2024-11-10 21:13:19 +02:00
Ilya Zlobintsev
b9b8499fe7 chore: bump version 2024-11-08 20:04:11 +02:00
Ilya Zlobintsev
5f95a4dc12 feat: add special case for invalid throttle mask 2024-11-08 10:13:23 +02:00
Ilya Zlobintsev
23ab0e86e8
refactor: make info page a relm component (#404)
* refactor: drop RootStack

* refactor: make InformationPage a relm component
2024-11-07 22:35:23 +02:00
Ilya Zlobintsev
41f26c7f34 fix: deduplicate throttle status bits
should help with behaviour described in https://github.com/ilya-zlobintsev/LACT/pull/402
2024-11-07 09:01:36 +02:00
Ilya Zlobintsev
bc594da95b
feat: implement clocks control on Nvidia (#398)
* feat: initial support for clocks control on nvidia

* feat: store last applied offset, use it for reporting when needed

* chore: remove unused file
2024-11-01 23:28:57 +02:00
Ilya Zlobintsev
d0f593e655 fix: increase retry intervals when evaluating GPUs at start 2024-10-28 09:30:17 +02:00
Ilya Zlobintsev
e685b186f3 chore: include service log in debug snapshot 2024-10-27 23:34:37 +02:00
Ilya Zlobintsev
7cabe614c2
feat!: add initial Nvidia support (#388)
* feat: abstract GpuController

* test?

* fix: dont re-initialize nvidia gpu

* feat: more info on nvidia

* feat: core stats on nvidia

* fix: nvidia uses milliwatts not microwatts

* feat: include device info and stats responses in debug snapshot

* chore: avoid logging msg twice

* fix: correctly handle only secondary line series being present in a plot

* feat: more reporting

* feat: support for setting the power cap

* chore: avoid trying to initialize drm for non-amd gpus

* chore: avoid drawing primary plot label when only secondary values are present

* feat: hide unknown values on the info page

* feat: report cuda cores

* chore: limit power usage value accuracy

* 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

* feat: nvidia fan control

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

* feat: pstate reporting

* doc: update README to mention that nvidia is now supported

* doc: add historical data to readme

* doc: improve screenshot alignemnt

* doc: add nvidia driver note

---------

Signed-off-by: Alik Aslanyan <inline0@pm.me>
Co-authored-by: Alik Aslanyan <inline0@pm.me>
2024-10-25 23:35:26 +03:00
Ilya Zlobintsev
67c4aaae11 fix: retry reading p-states if the value is nonsensical 2024-10-17 09:02:33 +03:00
Ilya Zlobintsev
96bebf4ee4 fix: getting pci info in snapshot 2024-10-16 19:53:13 +03:00
Ilya Zlobintsev
96a46bb4a4 feat: include device info and stats responses in debug snapshot 2024-10-16 09:08:23 +03:00
Ilya Zlobintsev
b1229a3e1e chore: bump version 2024-09-28 10:03:14 +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
fa0eb3083c chore: skip serializing empty values in the config 2024-09-22 17:49:25 +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