Nvidia: only do throttling checks if enabled

pull/758/head
FlightlessMango 2 years ago
parent 5d6ebe2f38
commit 19fbd9bf9b

@ -22,7 +22,7 @@ decltype(&getAmdGpuInfo) getAmdGpuInfo_actual = nullptr;
bool checkNvidia(const char *pci_dev){
bool nvSuccess = false;
#ifdef HAVE_NVML
nvSuccess = checkNVML(pci_dev) && getNVMLInfo();
nvSuccess = checkNVML(pci_dev) && getNVMLInfo({});
#endif
#ifdef HAVE_XNVCTRL
if (!nvSuccess)
@ -35,10 +35,10 @@ bool checkNvidia(const char *pci_dev){
return nvSuccess;
}
void getNvidiaGpuInfo(){
void getNvidiaGpuInfo(const struct overlay_params& params){
#ifdef HAVE_NVML
if (nvmlSuccess){
getNVMLInfo();
getNVMLInfo(params);
gpu_info.load = nvidiaUtilization.gpu;
gpu_info.temp = nvidiaTemp;
gpu_info.memoryUsed = nvidiaMemory.used / (1024.f * 1024.f * 1024.f);
@ -46,9 +46,11 @@ void getNvidiaGpuInfo(){
gpu_info.MemClock = nvidiaMemClock;
gpu_info.powerUsage = nvidiaPowerUsage / 1000;
gpu_info.memoryTotal = nvidiaMemory.total / (1024.f * 1024.f * 1024.f);
gpu_info.is_temp_throttled = (nvml_throttle_reasons & 0x0000000000000060LL) != 0;
gpu_info.is_power_throttled = (nvml_throttle_reasons & 0x000000000000008CLL) != 0;
gpu_info.is_other_throttled = (nvml_throttle_reasons & 0x0000000000000112LL) != 0;
if (params.enabled[OVERLAY_PARAM_ENABLED_throttling_status]){
gpu_info.is_temp_throttled = (nvml_throttle_reasons & 0x0000000000000060LL) != 0;
gpu_info.is_power_throttled = (nvml_throttle_reasons & 0x000000000000008CLL) != 0;
gpu_info.is_other_throttled = (nvml_throttle_reasons & 0x0000000000000112LL) != 0;
}
return;
}
#endif

@ -4,6 +4,7 @@
#include <cstdio>
#include <cstdint>
#include "overlay_params.h"
struct amdgpu_files
{
@ -37,7 +38,7 @@ struct gpuInfo{
extern struct gpuInfo gpu_info;
void getNvidiaGpuInfo(void);
void getNvidiaGpuInfo(const struct overlay_params& params);
void getAmdGpuInfo(void);
extern decltype(&getAmdGpuInfo) getAmdGpuInfo_actual;
bool checkNvidia(const char *pci_dev);

@ -3,6 +3,7 @@
#define MANGOHUD_NVIDIA_INFO_H
#include <nvml.h>
#include "overlay_params.h"
extern nvmlReturn_t result;
extern unsigned int nvidiaTemp, processSamplesCount, *vgpuInstanceSamplesCount, nvidiaCoreClock, nvidiaMemClock, nvidiaPowerUsage;
@ -13,6 +14,6 @@ extern bool nvmlSuccess;
extern unsigned long long nvml_throttle_reasons;
bool checkNVML(const char* pciBusId);
bool getNVMLInfo(void);
bool getNVMLInfo(const struct overlay_params& params);
#endif //MANGOHUD_NVIDIA_INFO_H

@ -3,6 +3,7 @@
#include "nvidia_info.h"
#include <iostream>
#include "overlay.h"
#include "overlay_params.h"
nvmlReturn_t result;
nvmlDevice_t nvidiaDevice;
@ -45,7 +46,7 @@ bool checkNVML(const char* pciBusId){
return false;
}
bool getNVMLInfo(){
bool getNVMLInfo(const struct overlay_params& params){
nvmlReturn_t response;
auto& nvml = get_libnvml_loader();
response = nvml.nvmlDeviceGetUtilizationRates(nvidiaDevice, &nvidiaUtilization);
@ -55,8 +56,8 @@ bool getNVMLInfo(){
nvml.nvmlDeviceGetClockInfo(nvidiaDevice, NVML_CLOCK_MEM, &nvidiaMemClock);
nvml.nvmlDeviceGetPowerUsage(nvidiaDevice, &nvidiaPowerUsage);
deviceID = nvidiaPciInfo.pciDeviceId >> 16;
nvml.nvmlDeviceGetCurrentClocksThrottleReasons(nvidiaDevice, &nvml_throttle_reasons);
if (params.enabled[OVERLAY_PARAM_ENABLED_throttling_status])
nvml.nvmlDeviceGetCurrentClocksThrottleReasons(nvidiaDevice, &nvml_throttle_reasons);
if (response == NVML_ERROR_NOT_SUPPORTED) {
if (nvmlSuccess)

@ -108,7 +108,7 @@ void update_hw_info(const struct overlay_params& params, uint32_t vendorID)
amdgpu_get_metrics();
if (vendorID == 0x10de)
getNvidiaGpuInfo();
getNvidiaGpuInfo(params);
}
#ifdef __linux__

@ -525,6 +525,7 @@ parse_overlay_env(struct overlay_params *params,
params->enabled[OVERLAY_PARAM_ENABLED_battery_icon] = 0;
params->enabled[OVERLAY_PARAM_ENABLED_mangoapp_steam] = 0;
params->enabled[OVERLAY_PARAM_ENABLED_hide_fsr_sharpness] = 0;
params->enabled[OVERLAY_PARAM_ENABLED_throttling_status] = 0;
params->enabled[OVERLAY_PARAM_ENABLED_read_cfg] = read_cfg;
}
#define OVERLAY_PARAM_BOOL(name) \
@ -576,6 +577,7 @@ parse_overlay_config(struct overlay_params *params,
params->enabled[OVERLAY_PARAM_ENABLED_fps_only] = false;
params->enabled[OVERLAY_PARAM_ENABLED_gamepad_battery] = false;
params->enabled[OVERLAY_PARAM_ENABLED_gamepad_battery_icon] = true;
params->enabled[OVERLAY_PARAM_ENABLED_throttling_status] = false;
params->fps_sampling_period = 500000000; /* 500ms */
params->width = 0;
params->height = 140;
@ -666,6 +668,7 @@ parse_overlay_config(struct overlay_params *params,
params->enabled[OVERLAY_PARAM_ENABLED_battery_icon] = 0;
params->enabled[OVERLAY_PARAM_ENABLED_mangoapp_steam] = 0;
params->enabled[OVERLAY_PARAM_ENABLED_hide_fsr_sharpness] = 0;
params->enabled[OVERLAY_PARAM_ENABLED_throttling_status] = 0;
params->options.erase("full");
}
for (auto& it : params->options) {

Loading…
Cancel
Save