diff options
author | Krzysztof Bogacki <krzysztof.bogacki@leancode.pl> | 2022-06-24 22:02:08 +0300 |
---|---|---|
committer | Jens Peters <jp7677@gmail.com> | 2022-06-25 01:53:54 +0300 |
commit | f5efc9ad69a4db48101be9b4e13358dc690473f9 (patch) | |
tree | 4ba4d564b644a36b317e40463a672299fef96fba | |
parent | 4a91a81d9fa2d8f2d0262a315fba11a08b848096 (diff) |
nvapi-gpu,nvml: Move enum mapping functions
Also extract mapping bus type to a function.
-rw-r--r-- | src/nvapi_gpu.cpp | 84 | ||||
-rw-r--r-- | src/sysinfo/nvml.cpp | 77 | ||||
-rw-r--r-- | src/sysinfo/nvml.h | 4 |
3 files changed, 86 insertions, 79 deletions
diff --git a/src/nvapi_gpu.cpp b/src/nvapi_gpu.cpp index a8c7f52..b0b4ce6 100644 --- a/src/nvapi_gpu.cpp +++ b/src/nvapi_gpu.cpp @@ -119,24 +119,7 @@ extern "C" { nvmlBusType_t busType; auto result = adapter->GetNvmlDeviceBusType(&busType); if (result == NVML_SUCCESS) { - switch (busType) { - case NVML_BUS_TYPE_PCI: - *pBusType = NVAPI_GPU_BUS_TYPE_PCI; - break; - case NVML_BUS_TYPE_PCIE: - *pBusType = NVAPI_GPU_BUS_TYPE_PCI_EXPRESS; - break; - case NVML_BUS_TYPE_FPCI: - *pBusType = NVAPI_GPU_BUS_TYPE_FPCI; - break; - case NVML_BUS_TYPE_AGP: - *pBusType = NVAPI_GPU_BUS_TYPE_AGP; - break; - default: - *pBusType = NVAPI_GPU_BUS_TYPE_UNDEFINED; - break; - } - + *pBusType = Nvml::ToNvGpuBusType(busType); return Ok(n); } } @@ -433,63 +416,6 @@ extern "C" { } } - static NV_THERMAL_TARGET MapThermalTarget(nvmlThermalTarget_t target) { - static_assert(static_cast<int>(NVML_THERMAL_TARGET_NONE) == static_cast<int>(NVAPI_THERMAL_TARGET_NONE)); - static_assert(static_cast<int>(NVML_THERMAL_TARGET_GPU) == static_cast<int>(NVAPI_THERMAL_TARGET_GPU)); - static_assert(static_cast<int>(NVML_THERMAL_TARGET_MEMORY) == static_cast<int>(NVAPI_THERMAL_TARGET_MEMORY)); - static_assert(static_cast<int>(NVML_THERMAL_TARGET_POWER_SUPPLY) == static_cast<int>(NVAPI_THERMAL_TARGET_POWER_SUPPLY)); - static_assert(static_cast<int>(NVML_THERMAL_TARGET_BOARD) == static_cast<int>(NVAPI_THERMAL_TARGET_BOARD)); - static_assert(static_cast<int>(NVML_THERMAL_TARGET_VCD_BOARD) == static_cast<int>(NVAPI_THERMAL_TARGET_VCD_BOARD)); - static_assert(static_cast<int>(NVML_THERMAL_TARGET_VCD_INLET) == static_cast<int>(NVAPI_THERMAL_TARGET_VCD_INLET)); - static_assert(static_cast<int>(NVML_THERMAL_TARGET_VCD_OUTLET) == static_cast<int>(NVAPI_THERMAL_TARGET_VCD_OUTLET)); - static_assert(static_cast<int>(NVML_THERMAL_TARGET_ALL) == static_cast<int>(NVAPI_THERMAL_TARGET_ALL)); - static_assert(static_cast<int>(NVML_THERMAL_TARGET_UNKNOWN) == static_cast<int>(NVAPI_THERMAL_TARGET_UNKNOWN)); - return static_cast<NV_THERMAL_TARGET>(target); - } - - static NV_THERMAL_CONTROLLER MapThermalController(nvmlThermalController_t controller) { - switch (controller) { - case NVML_THERMAL_CONTROLLER_NONE: - return NVAPI_THERMAL_CONTROLLER_NONE; - case NVML_THERMAL_CONTROLLER_GPU_INTERNAL: - return NVAPI_THERMAL_CONTROLLER_GPU_INTERNAL; - case NVML_THERMAL_CONTROLLER_ADM1032: - return NVAPI_THERMAL_CONTROLLER_ADM1032; - // case NVML_THERMAL_CONTROLLER_ADT7461: - // return NVAPI_THERMAL_CONTROLLER_ADT7461; - case NVML_THERMAL_CONTROLLER_MAX6649: - return NVAPI_THERMAL_CONTROLLER_MAX6649; - case NVML_THERMAL_CONTROLLER_MAX1617: - return NVAPI_THERMAL_CONTROLLER_MAX1617; - case NVML_THERMAL_CONTROLLER_LM99: - return NVAPI_THERMAL_CONTROLLER_LM99; - case NVML_THERMAL_CONTROLLER_LM89: - return NVAPI_THERMAL_CONTROLLER_LM89; - case NVML_THERMAL_CONTROLLER_LM64: - return NVAPI_THERMAL_CONTROLLER_LM64; - // case NVML_THERMAL_CONTROLLER_G781: - // return NVAPI_THERMAL_CONTROLLER_G781; - case NVML_THERMAL_CONTROLLER_ADT7473: - return NVAPI_THERMAL_CONTROLLER_ADT7473; - case NVML_THERMAL_CONTROLLER_SBMAX6649: - return NVAPI_THERMAL_CONTROLLER_SBMAX6649; - case NVML_THERMAL_CONTROLLER_VBIOSEVT: - return NVAPI_THERMAL_CONTROLLER_VBIOSEVT; - case NVML_THERMAL_CONTROLLER_OS: - return NVAPI_THERMAL_CONTROLLER_OS; - // case NVML_THERMAL_CONTROLLER_NVSYSCON_CANOAS: - // return NVAPI_THERMAL_CONTROLLER_NVSYSCON_CANOAS; - // case NVML_THERMAL_CONTROLLER_NVSYSCON_E551: - // return NVAPI_THERMAL_CONTROLLER_NVSYSCON_E551; - // case NVML_THERMAL_CONTROLLER_MAX6649R: - // return NVAPI_THERMAL_CONTROLLER_MAX6649R; - // case NVML_THERMAL_CONTROLLER_ADT7473S: - // return NVAPI_THERMAL_CONTROLLER_ADT7473S; - default: - return NVAPI_THERMAL_CONTROLLER_UNKNOWN; - } - } - NvAPI_Status __cdecl NvAPI_GPU_GetThermalSettings(NvPhysicalGpuHandle hPhysicalGpu, NvU32 sensorIndex, NV_GPU_THERMAL_SETTINGS* pThermalSettings) { constexpr auto n = __func__; static bool alreadyLoggedNoNvml = false; @@ -538,8 +464,8 @@ extern "C" { auto pThermalSettingsV1 = reinterpret_cast<NV_GPU_THERMAL_SETTINGS_V1*>(pThermalSettings); pThermalSettingsV1->count = thermalSettings.count; for (auto i = 0U; i < sensors; i++) { - pThermalSettingsV1->sensor[i].controller = MapThermalController(thermalSettings.sensor[i].controller); - pThermalSettingsV1->sensor[i].target = MapThermalTarget(thermalSettings.sensor[i].target); + pThermalSettingsV1->sensor[i].controller = Nvml::ToNvThermalController(thermalSettings.sensor[i].controller); + pThermalSettingsV1->sensor[i].target = Nvml::ToNvThermalTarget(thermalSettings.sensor[i].target); pThermalSettingsV1->sensor[i].currentTemp = thermalSettings.sensor[i].currentTemp; pThermalSettingsV1->sensor[i].defaultMaxTemp = thermalSettings.sensor[i].defaultMaxTemp; memcpy(&defaultMinTemp, &thermalSettings.sensor[i].defaultMinTemp, sizeof(defaultMinTemp)); @@ -550,8 +476,8 @@ extern "C" { case NV_GPU_THERMAL_SETTINGS_VER_2: pThermalSettings->count = thermalSettings.count; for (auto i = 0U; i < sensors; i++) { - pThermalSettings->sensor[i].controller = MapThermalController(thermalSettings.sensor[i].controller); - pThermalSettings->sensor[i].target = MapThermalTarget(thermalSettings.sensor[i].target); + pThermalSettings->sensor[i].controller = Nvml::ToNvThermalController(thermalSettings.sensor[i].controller); + pThermalSettings->sensor[i].target = Nvml::ToNvThermalTarget(thermalSettings.sensor[i].target); pThermalSettings->sensor[i].currentTemp = static_cast<NvS32>(thermalSettings.sensor[i].currentTemp); pThermalSettings->sensor[i].defaultMaxTemp = static_cast<NvS32>(thermalSettings.sensor[i].defaultMaxTemp); memcpy(&defaultMinTemp, &thermalSettings.sensor[i].defaultMinTemp, sizeof(defaultMinTemp)); diff --git a/src/sysinfo/nvml.cpp b/src/sysinfo/nvml.cpp index b0c5800..4083ff1 100644 --- a/src/sysinfo/nvml.cpp +++ b/src/sysinfo/nvml.cpp @@ -124,6 +124,83 @@ namespace dxvk { : NVML_ERROR_FUNCTION_NOT_FOUND; } + NV_THERMAL_TARGET Nvml::ToNvThermalTarget(nvmlThermalTarget_t target) { + static_assert(static_cast<int>(NVML_THERMAL_TARGET_NONE) == static_cast<int>(NVAPI_THERMAL_TARGET_NONE)); + static_assert(static_cast<int>(NVML_THERMAL_TARGET_GPU) == static_cast<int>(NVAPI_THERMAL_TARGET_GPU)); + static_assert(static_cast<int>(NVML_THERMAL_TARGET_MEMORY) == static_cast<int>(NVAPI_THERMAL_TARGET_MEMORY)); + static_assert(static_cast<int>(NVML_THERMAL_TARGET_POWER_SUPPLY) == static_cast<int>(NVAPI_THERMAL_TARGET_POWER_SUPPLY)); + static_assert(static_cast<int>(NVML_THERMAL_TARGET_BOARD) == static_cast<int>(NVAPI_THERMAL_TARGET_BOARD)); + static_assert(static_cast<int>(NVML_THERMAL_TARGET_VCD_BOARD) == static_cast<int>(NVAPI_THERMAL_TARGET_VCD_BOARD)); + static_assert(static_cast<int>(NVML_THERMAL_TARGET_VCD_INLET) == static_cast<int>(NVAPI_THERMAL_TARGET_VCD_INLET)); + static_assert(static_cast<int>(NVML_THERMAL_TARGET_VCD_OUTLET) == static_cast<int>(NVAPI_THERMAL_TARGET_VCD_OUTLET)); + static_assert(static_cast<int>(NVML_THERMAL_TARGET_ALL) == static_cast<int>(NVAPI_THERMAL_TARGET_ALL)); + static_assert(static_cast<int>(NVML_THERMAL_TARGET_UNKNOWN) == static_cast<int>(NVAPI_THERMAL_TARGET_UNKNOWN)); + return static_cast<NV_THERMAL_TARGET>(target); + } + + NV_THERMAL_CONTROLLER Nvml::ToNvThermalController(nvmlThermalController_t controller) { + switch (controller) { + case NVML_THERMAL_CONTROLLER_NONE: + return NVAPI_THERMAL_CONTROLLER_NONE; + case NVML_THERMAL_CONTROLLER_GPU_INTERNAL: + return NVAPI_THERMAL_CONTROLLER_GPU_INTERNAL; + case NVML_THERMAL_CONTROLLER_ADM1032: + return NVAPI_THERMAL_CONTROLLER_ADM1032; + // case NVML_THERMAL_CONTROLLER_ADT7461: + // return NVAPI_THERMAL_CONTROLLER_ADT7461; + case NVML_THERMAL_CONTROLLER_MAX6649: + return NVAPI_THERMAL_CONTROLLER_MAX6649; + case NVML_THERMAL_CONTROLLER_MAX1617: + return NVAPI_THERMAL_CONTROLLER_MAX1617; + case NVML_THERMAL_CONTROLLER_LM99: + return NVAPI_THERMAL_CONTROLLER_LM99; + case NVML_THERMAL_CONTROLLER_LM89: + return NVAPI_THERMAL_CONTROLLER_LM89; + case NVML_THERMAL_CONTROLLER_LM64: + return NVAPI_THERMAL_CONTROLLER_LM64; + // case NVML_THERMAL_CONTROLLER_G781: + // return NVAPI_THERMAL_CONTROLLER_G781; + case NVML_THERMAL_CONTROLLER_ADT7473: + return NVAPI_THERMAL_CONTROLLER_ADT7473; + case NVML_THERMAL_CONTROLLER_SBMAX6649: + return NVAPI_THERMAL_CONTROLLER_SBMAX6649; + case NVML_THERMAL_CONTROLLER_VBIOSEVT: + return NVAPI_THERMAL_CONTROLLER_VBIOSEVT; + case NVML_THERMAL_CONTROLLER_OS: + return NVAPI_THERMAL_CONTROLLER_OS; + // case NVML_THERMAL_CONTROLLER_NVSYSCON_CANOAS: + // return NVAPI_THERMAL_CONTROLLER_NVSYSCON_CANOAS; + // case NVML_THERMAL_CONTROLLER_NVSYSCON_E551: + // return NVAPI_THERMAL_CONTROLLER_NVSYSCON_E551; + // case NVML_THERMAL_CONTROLLER_MAX6649R: + // return NVAPI_THERMAL_CONTROLLER_MAX6649R; + // case NVML_THERMAL_CONTROLLER_ADT7473S: + // return NVAPI_THERMAL_CONTROLLER_ADT7473S; + default: + return NVAPI_THERMAL_CONTROLLER_UNKNOWN; + } + } + + NV_GPU_BUS_TYPE Nvml::ToNvGpuBusType(nvmlBusType_t type) { + switch (type) { + case NVML_BUS_TYPE_PCI: + return NVAPI_GPU_BUS_TYPE_PCI; + break; + case NVML_BUS_TYPE_PCIE: + return NVAPI_GPU_BUS_TYPE_PCI_EXPRESS; + break; + case NVML_BUS_TYPE_FPCI: + return NVAPI_GPU_BUS_TYPE_FPCI; + break; + case NVML_BUS_TYPE_AGP: + return NVAPI_GPU_BUS_TYPE_AGP; + break; + default: + return NVAPI_GPU_BUS_TYPE_UNDEFINED; + break; + } + } + template <typename T> T Nvml::GetProcAddress(const char* name) { return reinterpret_cast<T>(reinterpret_cast<void*>(::GetProcAddress(m_nvmlModule, name))); diff --git a/src/sysinfo/nvml.h b/src/sysinfo/nvml.h index 6a42e0e..d28f4ef 100644 --- a/src/sysinfo/nvml.h +++ b/src/sysinfo/nvml.h @@ -22,6 +22,10 @@ namespace dxvk { [[nodiscard]] virtual nvmlReturn_t DeviceGetBusType(nvmlDevice_t device, nvmlBusType_t* type) const; [[nodiscard]] virtual nvmlReturn_t DeviceGetDynamicPstatesInfo(nvmlDevice_t device, nvmlGpuDynamicPstatesInfo_t* pDynamicPstatesInfo) const; + [[nodiscard]] static NV_THERMAL_TARGET ToNvThermalTarget(nvmlThermalTarget_t target); + [[nodiscard]] static NV_THERMAL_CONTROLLER ToNvThermalController(nvmlThermalController_t controller); + [[nodiscard]] static NV_GPU_BUS_TYPE ToNvGpuBusType(nvmlBusType_t type); + private: typedef decltype(&nvmlInit_v2) PFN_nvmlInit_v2; typedef decltype(&nvmlShutdown) PFN_nvmlShutdown; |