From 8fc21de71600bc2b04f14c543c097cba7443d7a9 Mon Sep 17 00:00:00 2001
From: Boria138 <boriabloger@protonmail.com>
Date: Tue, 22 Aug 2023 16:36:42 +0600
Subject: [PATCH] Added automatic detection of RTX support by Nvidia card

Unfortunately for lack of a 16 series card the code was not tested
---
 data_from_portwine/scripts/functions_helper | 51 +++++++++++++++++++++
 1 file changed, 51 insertions(+)

diff --git a/data_from_portwine/scripts/functions_helper b/data_from_portwine/scripts/functions_helper
index 9b05a1bb..baa991c9 100755
--- a/data_from_portwine/scripts/functions_helper
+++ b/data_from_portwine/scripts/functions_helper
@@ -1061,3 +1061,54 @@ pw_find_exe () {
         exit 0
     fi
 }
+
+nvidia_check_arch(){
+ local gpu_info=$(lspci | grep "VGA\|3D")
+ 
+ if [[ "$gpu_info" =~ NVIDIA ]]; then
+        if [[ "$gpu_info" =~ G[0-9]*|GT[0-9]*|MCP[0-9]* ]]; then
+            nv_arch=Tesla
+        elif [[ "$gpu_info" =~ GF[0-9]* ]]; then
+            nv_arch=Fermi
+        elif [[ "$gpu_info" =~ GK[0-9]* ]]; then
+            nv_arch=Kepler
+        elif [[ "$gpu_info" =~ GM[0-9]* ]]; then
+            nv_arch=Maxwell
+        elif [[ "$gpu_info" =~ GP[0-9]* ]]; then
+            nv_arch=Pascal
+        elif [[ "$gpu_info" =~ GV[0-9]* ]]; then
+            nv_arch=Volta
+        elif [[ "$gpu_info" =~ TU[0-9]* ]]; then
+            nv_arch=Turing
+        elif [[ "$gpu_info" =~ GA[0-9]* ]]; then
+            nv_arch=Ampere
+        elif [[ "$gpu_info" =~ AD[0-9]* ]]; then
+            nv_arch=Ada_Lovelace
+        fi
+    fi
+}
+
+nvidia_check_arch
+
+# Check for Nvidia GPU available
+if [[ -n "$nv_arch" ]]; then
+    case "$nv_arch" in
+        Turing)
+            if [[ "$gpu_info" =~ TU16[0-9]* ]]; then
+            # Nvida GTX 16 series
+                export PW_USE_NVAPI_AND_DLSS=0
+            else
+            # Nvidia RTX 20 series
+                export PW_USE_NVAPI_AND_DLSS=1
+            fi
+            ;;
+            # Nvidia RTX 30 and 40 series
+         Ampere|Ada_Lovelace)
+            export PW_USE_NVAPI_AND_DLSS=1
+            ;;
+        *)
+            # Everything else nvidia cards
+            export PW_USE_NVAPI_AND_DLSS=0
+            ;;
+    esac
+fi