From c33ce2b734856934f53721eeffe421b1da0fb935 Mon Sep 17 00:00:00 2001 From: flightlessmango Date: Sun, 7 Jan 2024 12:37:54 +0100 Subject: [PATCH] amdgpu: hwmon: check for power1_input Some GPUs don't support power1_average and only power1_input. Some GPUs support both. We check if power1_average exists first, then fallback to power1_input --- src/gpu.cpp | 3 +++ src/overlay.cpp | 2 ++ 2 files changed, 5 insertions(+) diff --git a/src/gpu.cpp b/src/gpu.cpp index 8afa22e3..451be192 100644 --- a/src/gpu.cpp +++ b/src/gpu.cpp @@ -103,6 +103,9 @@ void getAmdGpuInfo(){ gpu_info.MemClock = value / 1000000; } + // TODO: on some gpus this will use the power1_input instead + // this value is instantaneous and should be averaged over time + // probably just average everything in this function to be safe if (amdgpu.power_usage) { rewind(amdgpu.power_usage); fflush(amdgpu.power_usage); diff --git a/src/overlay.cpp b/src/overlay.cpp index 45f7fc4c..08f3a1ad 100644 --- a/src/overlay.cpp +++ b/src/overlay.cpp @@ -930,6 +930,8 @@ void init_gpu_stats(uint32_t& vendorID, uint32_t reported_deviceID, overlay_para amdgpu.memory_clock = fopen((hwmon_path + dir + "/freq2_input").c_str(), "r"); if (!amdgpu.power_usage) amdgpu.power_usage = fopen((hwmon_path + dir + "/power1_average").c_str(), "r"); + if (!amdgpu.power_usage) + amdgpu.power_usage = fopen((hwmon_path + dir + "/power1_input").c_str(), "r"); if (!amdgpu.fan) amdgpu.fan = fopen((hwmon_path + dir + "/fan1_input").c_str(), "r"); }