diff options
| author | fazzi <18248986+fxzzi@users.noreply.github.com> | 2025-04-18 20:44:54 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-04-18 21:44:54 +0200 |
| commit | 51afc2c2910d6f7c1f2dee9c90f54729d3c3d940 (patch) | |
| tree | 3c4bc00df50699fb4d324b1592d6d5742bb510e8 /src/helpers/MiscFunctions.cpp | |
| parent | 02f7da2bf23b75f097388b776143af5963b8e13b (diff) | |
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
Diffstat (limited to 'src/helpers/MiscFunctions.cpp')
| -rw-r--r-- | src/helpers/MiscFunctions.cpp | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/src/helpers/MiscFunctions.cpp b/src/helpers/MiscFunctions.cpp index 9e398fd9..88af38c7 100644 --- a/src/helpers/MiscFunctions.cpp +++ b/src/helpers/MiscFunctions.cpp @@ -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; +} |
