ctm: enable fade animation on nvidia driver versions 575 and above (#10095)

* ctm: enable fade animation on nvidia driver versions 575 and above

* format if statement without braces; handle potential throw when checking for nvidia version file
This commit is contained in:
fazzi
2025-04-18 20:44:54 +01:00
committed by GitHub
parent 02f7da2bf2
commit 51afc2c291
4 changed files with 45 additions and 37 deletions

View File

@@ -817,3 +817,38 @@ float stringToPercentage(const std::string& VALUE, const float REL) {
else
return std::stof(VALUE);
}
// Checks if Nvidia driver major version is at least given version.
// Useful for explicit_sync_kms and ctm_animation as they only work
// past certain driver versions.
bool isNvidiaDriverVersionAtLeast(int threshold) {
static int driverMajor = 0;
static bool once = true;
if (once) {
once = false;
std::error_code ec;
if (std::filesystem::exists("/sys/module/nvidia_drm/version", ec) && !ec) {
std::ifstream ifs("/sys/module/nvidia_drm/version");
if (ifs.good()) {
try {
std::string driverInfo((std::istreambuf_iterator<char>(ifs)), (std::istreambuf_iterator<char>()));
size_t firstDot = driverInfo.find('.');
if (firstDot != std::string::npos)
driverMajor = std::stoi(driverInfo.substr(0, firstDot));
Debug::log(LOG, "Parsed NVIDIA major version: {}", driverMajor);
} catch (std::exception& e) {
driverMajor = 0; // Default to 0 if parsing fails
}
ifs.close();
}
}
}
return driverMajor >= threshold;
}