diff options
author | Krzysztof Bogacki <krzysztof.bogacki@leancode.pl> | 2022-06-25 17:39:47 +0300 |
---|---|---|
committer | Jens Peters <jp7677@gmail.com> | 2022-06-25 18:40:16 +0300 |
commit | cbac27d7d15e00e14774fa9f8a8d44544daf68aa (patch) | |
tree | b9bb9ef64a9de98aec6fba25747b5c97c7ae6aa3 | |
parent | 77f67833df8f22f4d30c1cdcb47cfc257ea35ec0 (diff) |
nvml: Use macros to simplify handling of function pointers
-rw-r--r-- | src/sysinfo/nvml.cpp | 2 | ||||
-rw-r--r-- | src/sysinfo/nvml.h | 45 |
2 files changed, 19 insertions, 28 deletions
diff --git a/src/sysinfo/nvml.cpp b/src/sysinfo/nvml.cpp index 4083ff1..6b5dd8b 100644 --- a/src/sysinfo/nvml.cpp +++ b/src/sysinfo/nvml.cpp @@ -14,7 +14,7 @@ namespace dxvk { return; } -#define GETPROCADDR(x) m_##x = GetProcAddress<PFN_##x>(#x) +#define GETPROCADDR(x) m_##x = GetProcAddress<decltype(&x)>(#x) GETPROCADDR(nvmlInit_v2); GETPROCADDR(nvmlShutdown); diff --git a/src/sysinfo/nvml.h b/src/sysinfo/nvml.h index d28f4ef..6071d53 100644 --- a/src/sysinfo/nvml.h +++ b/src/sysinfo/nvml.h @@ -27,34 +27,25 @@ namespace dxvk { [[nodiscard]] static NV_GPU_BUS_TYPE ToNvGpuBusType(nvmlBusType_t type); private: - typedef decltype(&nvmlInit_v2) PFN_nvmlInit_v2; - typedef decltype(&nvmlShutdown) PFN_nvmlShutdown; - typedef decltype(&nvmlErrorString) PFN_nvmlErrorString; - typedef decltype(&nvmlDeviceGetHandleByPciBusId_v2) PFN_nvmlDeviceGetHandleByPciBusId_v2; - 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; - typedef decltype(&nvmlDeviceGetBusType) PFN_nvmlDeviceGetBusType; - typedef decltype(&nvmlDeviceGetDynamicPstatesInfo) PFN_nvmlDeviceGetDynamicPstatesInfo; - HMODULE m_nvmlModule{}; - PFN_nvmlInit_v2 m_nvmlInit_v2{}; - PFN_nvmlShutdown m_nvmlShutdown{}; - PFN_nvmlErrorString m_nvmlErrorString{}; - PFN_nvmlDeviceGetHandleByPciBusId_v2 m_nvmlDeviceGetHandleByPciBusId_v2{}; - 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{}; - PFN_nvmlDeviceGetBusType m_nvmlDeviceGetBusType{}; - PFN_nvmlDeviceGetDynamicPstatesInfo m_nvmlDeviceGetDynamicPstatesInfo{}; + +#define DECLARE_PFN(x) decltype(&x) m_##x{} + + DECLARE_PFN(nvmlInit_v2); + DECLARE_PFN(nvmlShutdown); + DECLARE_PFN(nvmlErrorString); + DECLARE_PFN(nvmlDeviceGetHandleByPciBusId_v2); + DECLARE_PFN(nvmlDeviceGetPciInfo_v3); + DECLARE_PFN(nvmlDeviceGetClockInfo); + DECLARE_PFN(nvmlDeviceGetTemperature); + DECLARE_PFN(nvmlDeviceGetThermalSettings); + DECLARE_PFN(nvmlDeviceGetPerformanceState); + DECLARE_PFN(nvmlDeviceGetUtilizationRates); + DECLARE_PFN(nvmlDeviceGetVbiosVersion); + DECLARE_PFN(nvmlDeviceGetBusType); + DECLARE_PFN(nvmlDeviceGetDynamicPstatesInfo); + +#undef DECLARE_PFN template <typename T> T GetProcAddress(const char* name); |