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-09-10 23:51:52 +0300
committerJens Peters <jp7677@gmail.com>2022-09-11 09:29:57 +0300
commit0fb1b03897662492f377b84b26c7a369093eea3b (patch)
treefc0b95f9fd88abfa68274b4bdb8ce3d5ec20e9a5
parent151bd75eeb87d71b523a02f66088d57d24246dc4 (diff)
nvapi-gpu: Remove temperature signedness workaround
-rw-r--r--src/nvapi_gpu.cpp13
-rw-r--r--tests/nvapi_sysinfo.cpp16
2 files changed, 12 insertions, 17 deletions
diff --git a/src/nvapi_gpu.cpp b/src/nvapi_gpu.cpp
index e0341bc..4bc3006 100644
--- a/src/nvapi_gpu.cpp
+++ b/src/nvapi_gpu.cpp
@@ -564,9 +564,6 @@ extern "C" {
return HandleInvalidated(str::format(n, ": NVML available but current adapter is not NVML compatible"), alreadyLoggedHandleInvalidated);
unsigned sensors;
- // NVML claims that defaultMinTemp is unsigned int, but it can return values like uint32_t(4294967256)
- // which would be equal to -40 if interpreted as signed, while NvAPI simply returns NvS32(-40) for the same device
- signed int defaultMinTemp;
nvmlGpuThermalSettings_t thermalSettings;
auto result = adapter->GetNvmlDeviceThermalSettings(sensorIndex, &thermalSettings);
switch (result) {
@@ -583,10 +580,9 @@ extern "C" {
for (auto i = 0U; i < sensors; i++) {
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));
- pThermalSettingsV1->sensor[i].defaultMinTemp = static_cast<NvU32>(std::max(defaultMinTemp, 0));
+ pThermalSettingsV1->sensor[i].currentTemp = static_cast<NvU32>(std::max(thermalSettings.sensor[i].currentTemp, 0));
+ pThermalSettingsV1->sensor[i].defaultMaxTemp = static_cast<NvU32>(std::max(thermalSettings.sensor[i].defaultMaxTemp, 0));
+ pThermalSettingsV1->sensor[i].defaultMinTemp = static_cast<NvU32>(std::max(thermalSettings.sensor[i].defaultMinTemp, 0));
}
break;
}
@@ -597,8 +593,7 @@ extern "C" {
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));
- pThermalSettings->sensor[i].defaultMinTemp = defaultMinTemp;
+ pThermalSettings->sensor[i].defaultMinTemp = static_cast<NvS32>(thermalSettings.sensor[i].defaultMinTemp);
}
break;
default:
diff --git a/tests/nvapi_sysinfo.cpp b/tests/nvapi_sysinfo.cpp
index 7a48147..ac30b9e 100644
--- a/tests/nvapi_sysinfo.cpp
+++ b/tests/nvapi_sysinfo.cpp
@@ -940,9 +940,9 @@ TEST_CASE("Sysinfo methods succeed", "[.sysinfo]") {
}
SECTION("GetThermalSettings succeeds when DeviceGetThermalSettings is available") {
- auto temp = 65U;
- auto maxTemp = 127U;
- auto minTemp = 4294967256U; // -40 as unsigned int
+ auto temp = 65;
+ auto maxTemp = 127;
+ auto minTemp = -40;
ALLOW_CALL(*nvml, DeviceGetThermalSettings(_, _, _)) // NOLINT(bugprone-use-after-move)
.LR_SIDE_EFFECT({
_3->count = 1;
@@ -972,8 +972,8 @@ TEST_CASE("Sysinfo methods succeed", "[.sysinfo]") {
REQUIRE(settings.count == 1);
REQUIRE(settings.sensor[0].controller == NVAPI_THERMAL_CONTROLLER_GPU_INTERNAL);
REQUIRE(settings.sensor[0].target == NVAPI_THERMAL_TARGET_GPU);
- REQUIRE(settings.sensor[0].currentTemp == temp);
- REQUIRE(settings.sensor[0].defaultMaxTemp == maxTemp);
+ REQUIRE(settings.sensor[0].currentTemp == static_cast<NvU32>(temp));
+ REQUIRE(settings.sensor[0].defaultMaxTemp == static_cast<NvU32>(maxTemp));
REQUIRE(settings.sensor[0].defaultMinTemp == 0U);
}
@@ -984,9 +984,9 @@ TEST_CASE("Sysinfo methods succeed", "[.sysinfo]") {
REQUIRE(settings.count == 1);
REQUIRE(settings.sensor[0].controller == NVAPI_THERMAL_CONTROLLER_GPU_INTERNAL);
REQUIRE(settings.sensor[0].target == NVAPI_THERMAL_TARGET_GPU);
- REQUIRE(settings.sensor[0].currentTemp == static_cast<int>(temp));
- REQUIRE(settings.sensor[0].defaultMaxTemp == static_cast<int>(maxTemp));
- REQUIRE(settings.sensor[0].defaultMinTemp == -40);
+ REQUIRE(settings.sensor[0].currentTemp == temp);
+ REQUIRE(settings.sensor[0].defaultMaxTemp == maxTemp);
+ REQUIRE(settings.sensor[0].defaultMinTemp == minTemp);
}
SECTION("GetThermalSettings with unknown struct version returns incompatible-struct-version") {