Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/jp7677/dxvk-nvapi.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKrzysztof Bogacki <krzysztof.bogacki@leancode.pl>2022-06-25 17:39:47 +0300
committerJens Peters <jp7677@gmail.com>2022-06-25 18:40:16 +0300
commitcbac27d7d15e00e14774fa9f8a8d44544daf68aa (patch)
treeb9bb9ef64a9de98aec6fba25747b5c97c7ae6aa3
parent77f67833df8f22f4d30c1cdcb47cfc257ea35ec0 (diff)
nvml: Use macros to simplify handling of function pointers
-rw-r--r--src/sysinfo/nvml.cpp2
-rw-r--r--src/sysinfo/nvml.h45
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);