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-24 22:02:08 +0300
committerJens Peters <jp7677@gmail.com>2022-06-25 01:53:54 +0300
commitf5efc9ad69a4db48101be9b4e13358dc690473f9 (patch)
tree4ba4d564b644a36b317e40463a672299fef96fba
parent4a91a81d9fa2d8f2d0262a315fba11a08b848096 (diff)
nvapi-gpu,nvml: Move enum mapping functions
Also extract mapping bus type to a function.
-rw-r--r--src/nvapi_gpu.cpp84
-rw-r--r--src/sysinfo/nvml.cpp77
-rw-r--r--src/sysinfo/nvml.h4
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;