From 369b18eb0753a69b37fc3758a7cd3b7b07b768a3 Mon Sep 17 00:00:00 2001 From: FlightlessMango Date: Wed, 29 Jan 2020 03:04:10 +0100 Subject: [PATCH] Use nvml to display gpu values in hud --- src/cpu_gpu.h | 34 +++++++++++++++++++++------------- src/nvml.c | 3 --- src/overlay.cpp | 4 ++-- 3 files changed, 23 insertions(+), 18 deletions(-) diff --git a/src/cpu_gpu.h b/src/cpu_gpu.h index bf1b8ede..07278d9f 100644 --- a/src/cpu_gpu.h +++ b/src/cpu_gpu.h @@ -165,8 +165,6 @@ void PrintStats(const std::vector & entries1, const std::vector smiArray; - string nvidiaSmi = exec("nvidia-smi --query-gpu=utilization.gpu,temperature.gpu --format=csv,noheader | tr -d ' ' | head -n1 | tr -d '%'"); - istringstream f(nvidiaSmi); - string s; - while (getline(f, s, ',')) { - smiArray.push_back(s); - } - gpuLoadDisplay = smiArray[0]; - gpuLoad = stoi(smiArray[0]); - gpuTemp = stoi(smiArray[1]); +// void *queryNvidiaSmi(void *){ +// vector smiArray; +// string nvidiaSmi = exec("nvidia-smi --query-gpu=utilization.gpu,temperature.gpu --format=csv,noheader | tr -d ' ' | head -n1 | tr -d '%'"); +// istringstream f(nvidiaSmi); +// string s; +// while (getline(f, s, ',')) { +// smiArray.push_back(s); +// } +// gpuLoadDisplay = smiArray[0]; +// gpuLoad = stoi(smiArray[0]); +// gpuTemp = stoi(smiArray[1]); +// pthread_detach(nvidiaSmiThread); +// return NULL; +// } + +void *getNvidiaGpuInfo(void *){ + checkNvidia(); + gpuLoad = nvidiaUtilization.gpu; + gpuLoadDisplay = gpuLoad; + gpuTemp = nvidiaTemp; + pthread_detach(nvidiaSmiThread); return NULL; } diff --git a/src/nvml.c b/src/nvml.c index 4d568b97..6ac6316f 100644 --- a/src/nvml.c +++ b/src/nvml.c @@ -1,4 +1,3 @@ -#include #include "nvidia_info.h" #include @@ -10,7 +9,5 @@ void checkNvidia(){ nvmlDeviceGetHandleByIndex(0, &nvidiaDevice); nvmlDeviceGetUtilizationRates(nvidiaDevice, &nvidiaUtilization); nvmlDeviceGetTemperature(nvidiaDevice, NVML_TEMPERATURE_GPU, &nvidiaTemp); - printf("temp: %i\n", nvidiaTemp); - printf("util: %i\n", nvidiaUtilization.gpu); } } diff --git a/src/overlay.cpp b/src/overlay.cpp index 79b1891b..1faf8e9c 100644 --- a/src/overlay.cpp +++ b/src/overlay.cpp @@ -914,7 +914,7 @@ static void snapshot_swapchain_frame(struct swapchain_data *data) // get gpu usage if (deviceName.find("GeForce") != std::string::npos) - pthread_create(&nvidiaSmiThread, NULL, &queryNvidiaSmi, NULL); + pthread_create(&nvidiaSmiThread, NULL, &getNvidiaGpuInfo, NULL); if (deviceName.find("Radeon") != std::string::npos || deviceName.find("AMD") != std::string::npos) pthread_create(&gpuThread, NULL, &getAmdGpuUsage, NULL); @@ -1071,7 +1071,7 @@ static void compute_swapchain_display(struct swapchain_data *data) if (deviceName.find("GeForce") != std::string::npos || deviceName.find("Radeon") != std::string::npos || deviceName.find("AMD") != std::string::npos){ ImGui::TextColored(ImVec4(0.0, 0.502, 0.25, 1.00f), "GPU"); ImGui::SameLine(hudFirstRow); - ImGui::Text("%s%%", gpuLoadDisplay.c_str()); + ImGui::Text("%i%%", gpuLoad); // ImGui::SameLine(150); // ImGui::Text("%s", "%"); if (instance_data->params.enabled[OVERLAY_PARAM_ENABLED_gpu_temp]){