diff options
Diffstat (limited to 'benchmarks/mangohud/files/patch-src_cpu.cpp')
-rw-r--r-- | benchmarks/mangohud/files/patch-src_cpu.cpp | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/benchmarks/mangohud/files/patch-src_cpu.cpp b/benchmarks/mangohud/files/patch-src_cpu.cpp new file mode 100644 index 000000000000..8f40b66beeeb --- /dev/null +++ b/benchmarks/mangohud/files/patch-src_cpu.cpp @@ -0,0 +1,72 @@ +--- src/cpu.cpp.orig 2021-07-08 06:23:59 UTC ++++ src/cpu.cpp +@@ -227,6 +227,7 @@ bool CPUStats::UpdateCPUData() + + bool CPUStats::UpdateCoreMhz() { + m_coreMhz.clear(); ++#if defined(__linux__) + std::ifstream cpuInfo(PROCCPUINFOFILE); + std::string row; + size_t i = 0; +@@ -238,6 +239,13 @@ bool CPUStats::UpdateCoreMhz() { + i++; + } + } ++#elif defined(__FreeBSD__) ++ char sysctl_name[32]; ++ for (int i = 0; i < m_cpuData.size(); i++) { ++ snprintf(sysctl_name, sizeof(sysctl_name), "dev.cpu.%d.freq", i); ++ m_cpuData[i].mhz = read_sysctl<int>(sysctl_name); ++ } ++#endif + m_cpuDataTotal.cpu_mhz = 0; + for (auto data : m_cpuData) + m_cpuDataTotal.cpu_mhz += data.mhz; +@@ -246,6 +254,7 @@ bool CPUStats::UpdateCoreMhz() { + } + + bool CPUStats::UpdateCpuTemp() { ++#if defined(__linux__) + if (!m_cpuTempFile) + return false; + +@@ -256,6 +265,23 @@ bool CPUStats::UpdateCpuTemp() { + m_cpuDataTotal.temp = temp / 1000; + + return ret; ++#elif defined(__FreeBSD__) ++ char sysctl_name[32]; ++ int dK, i, temp; ++ for (temp = i = 0; i < m_cpuData.size(); i++) { ++ snprintf(sysctl_name, sizeof(sysctl_name), "dev.cpu.%d.temperature", i); ++ dK = read_sysctl<int>(sysctl_name); ++ if (dK < 0) { ++ // If we could not read some core's temperature, store ++ // the last read (bogus) value and return false early. ++ m_cpuDataTotal.temp = dK; ++ return false; ++ } ++ temp += dK - 2731; ++ } ++ m_cpuDataTotal.temp = temp / (10 * m_cpuData.size()); ++ return m_cpuDataTotal.temp > 0; ++#endif + } + + static bool get_cpu_power_k10temp(CPUPowerData* cpuPowerData, int& power) { +@@ -407,6 +433,7 @@ static bool find_fallback_temp_input(const std::string + return false; + } + ++#ifdef __linux__ + bool CPUStats::GetCpuFile() { + if (m_cpuTempFile) + return true; +@@ -447,6 +474,7 @@ bool CPUStats::GetCpuFile() { + } + return true; + } ++#endif + + static bool find_input(const std::string& path, const char* input_prefix, std::string& input, const std::string& name) + { |