From 5202c20472cd9b1b98a1a646dfad80dd217391f6 Mon Sep 17 00:00:00 2001 From: Krzysztof Bogacki Date: Mon, 6 Jun 2022 21:57:43 +0200 Subject: nvml: Load and expose nvmlDeviceGetThermalSettings --- src/sysinfo/nvapi_adapter.cpp | 4 ++++ src/sysinfo/nvapi_adapter.h | 1 + src/sysinfo/nvml.cpp | 7 +++++++ src/sysinfo/nvml.h | 3 +++ 4 files changed, 15 insertions(+) diff --git a/src/sysinfo/nvapi_adapter.cpp b/src/sysinfo/nvapi_adapter.cpp index b15941e..e30d184 100644 --- a/src/sysinfo/nvapi_adapter.cpp +++ b/src/sysinfo/nvapi_adapter.cpp @@ -258,6 +258,10 @@ namespace dxvk { return m_nvml.DeviceGetTemperature(m_nvmlDevice, sensorType, temp); } + nvmlReturn_t NvapiAdapter::GetNvmlDeviceThermalSettings(unsigned int sensorIndex, nvmlGpuThermalSettings_t* pThermalSettings) const { + return m_nvml.DeviceGetThermalSettings(m_nvmlDevice, sensorIndex, pThermalSettings); + } + nvmlReturn_t NvapiAdapter::GetNvmlDevicePerformanceState(nvmlPstates_t* pState) const { return m_nvml.DeviceGetPerformanceState(m_nvmlDevice, pState); } diff --git a/src/sysinfo/nvapi_adapter.h b/src/sysinfo/nvapi_adapter.h index 2cf1fe7..19000a6 100644 --- a/src/sysinfo/nvapi_adapter.h +++ b/src/sysinfo/nvapi_adapter.h @@ -33,6 +33,7 @@ namespace dxvk { [[nodiscard]] std::string GetNvmlErrorString(nvmlReturn_t result) const; [[nodiscard]] nvmlReturn_t GetNvmlDeviceClockInfo(nvmlClockType_t type, unsigned int* clock) const; [[nodiscard]] nvmlReturn_t GetNvmlDeviceTemperature(nvmlTemperatureSensors_t sensorType, unsigned int* temp) const; + [[nodiscard]] nvmlReturn_t GetNvmlDeviceThermalSettings(unsigned int sensorIndex, nvmlGpuThermalSettings_t* pThermalSettings) const; [[nodiscard]] nvmlReturn_t GetNvmlDevicePerformanceState(nvmlPstates_t* pState) const; [[nodiscard]] nvmlReturn_t GetNvmlDeviceUtilizationRates(nvmlUtilization_t* utilization) const; [[nodiscard]] nvmlReturn_t GetNvmlDeviceVbiosVersion(char* version, unsigned int length) const; diff --git a/src/sysinfo/nvml.cpp b/src/sysinfo/nvml.cpp index 3c7029d..b0c5800 100644 --- a/src/sysinfo/nvml.cpp +++ b/src/sysinfo/nvml.cpp @@ -23,6 +23,7 @@ namespace dxvk { GETPROCADDR(nvmlDeviceGetPciInfo_v3); GETPROCADDR(nvmlDeviceGetClockInfo); GETPROCADDR(nvmlDeviceGetTemperature); + GETPROCADDR(nvmlDeviceGetThermalSettings); GETPROCADDR(nvmlDeviceGetPerformanceState); GETPROCADDR(nvmlDeviceGetUtilizationRates); GETPROCADDR(nvmlDeviceGetVbiosVersion); @@ -87,6 +88,12 @@ namespace dxvk { : NVML_ERROR_FUNCTION_NOT_FOUND; } + nvmlReturn_t Nvml::DeviceGetThermalSettings(nvmlDevice_t device, unsigned int sensorIndex, nvmlGpuThermalSettings_t* pThermalSettings) const { + return m_nvmlDeviceGetThermalSettings + ? m_nvmlDeviceGetThermalSettings(device, sensorIndex, pThermalSettings) + : NVML_ERROR_FUNCTION_NOT_FOUND; + } + nvmlReturn_t Nvml::DeviceGetPerformanceState(nvmlDevice_t device, nvmlPstates_t* pState) const { return m_nvmlDeviceGetPerformanceState ? m_nvmlDeviceGetPerformanceState(device, pState) diff --git a/src/sysinfo/nvml.h b/src/sysinfo/nvml.h index 3b8280a..6a42e0e 100644 --- a/src/sysinfo/nvml.h +++ b/src/sysinfo/nvml.h @@ -15,6 +15,7 @@ namespace dxvk { [[nodiscard]] virtual nvmlReturn_t DeviceGetPciInfo_v3(nvmlDevice_t device, nvmlPciInfo_t* pci) const; [[nodiscard]] virtual nvmlReturn_t DeviceGetClockInfo(nvmlDevice_t device, nvmlClockType_t type, unsigned int* clock) const; [[nodiscard]] virtual nvmlReturn_t DeviceGetTemperature(nvmlDevice_t device, nvmlTemperatureSensors_t sensorType, unsigned int* temp) const; + [[nodiscard]] virtual nvmlReturn_t DeviceGetThermalSettings(nvmlDevice_t device, unsigned int sensorIndex, nvmlGpuThermalSettings_t* pThermalSettings) const; [[nodiscard]] virtual nvmlReturn_t DeviceGetPerformanceState(nvmlDevice_t device, nvmlPstates_t* pState) const; [[nodiscard]] virtual nvmlReturn_t DeviceGetUtilizationRates(nvmlDevice_t device, nvmlUtilization_t* utilization) const; [[nodiscard]] virtual nvmlReturn_t DeviceGetVbiosVersion(nvmlDevice_t device, char* version, unsigned int length) const; @@ -29,6 +30,7 @@ namespace dxvk { typedef decltype(&nvmlDeviceGetPciInfo_v3) PFN_nvmlDeviceGetPciInfo_v3; typedef decltype(&nvmlDeviceGetClockInfo) PFN_nvmlDeviceGetClockInfo; typedef decltype(&nvmlDeviceGetTemperature) PFN_nvmlDeviceGetTemperature; + typedef decltype(&nvmlDeviceGetThermalSettings) PFN_nvmlDeviceGetThermalSettings; typedef decltype(&nvmlDeviceGetPerformanceState) PFN_nvmlDeviceGetPerformanceState; typedef decltype(&nvmlDeviceGetUtilizationRates) PFN_nvmlDeviceGetUtilizationRates; typedef decltype(&nvmlDeviceGetVbiosVersion) PFN_nvmlDeviceGetVbiosVersion; @@ -43,6 +45,7 @@ namespace dxvk { PFN_nvmlDeviceGetPciInfo_v3 m_nvmlDeviceGetPciInfo_v3{}; PFN_nvmlDeviceGetClockInfo m_nvmlDeviceGetClockInfo{}; PFN_nvmlDeviceGetTemperature m_nvmlDeviceGetTemperature{}; + PFN_nvmlDeviceGetThermalSettings m_nvmlDeviceGetThermalSettings{}; PFN_nvmlDeviceGetPerformanceState m_nvmlDeviceGetPerformanceState{}; PFN_nvmlDeviceGetUtilizationRates m_nvmlDeviceGetUtilizationRates{}; PFN_nvmlDeviceGetVbiosVersion m_nvmlDeviceGetVbiosVersion{}; -- cgit v1.2.3