From 268632204fb1a6878fba4d259bc6668d97e8afb1 Mon Sep 17 00:00:00 2001
From: Htylol <dixperm909@yandex.ru>
Date: Fri, 3 May 2024 03:03:14 +0500
Subject: [PATCH] Fix zink with gamescope,fix wined3d with proton 9+,d8vk on
 stable not working,new dgvoodoo2 with d3d8,add wined3d vulkan

---
 data_from_portwine/scripts/functions_helper | 153 +++++++++++---------
 data_from_portwine/scripts/start.sh         |  19 ++-
 data_from_portwine/scripts/var              |   2 +-
 3 files changed, 99 insertions(+), 75 deletions(-)

diff --git a/data_from_portwine/scripts/functions_helper b/data_from_portwine/scripts/functions_helper
index 74cf4a0e..b5754d98 100755
--- a/data_from_portwine/scripts/functions_helper
+++ b/data_from_portwine/scripts/functions_helper
@@ -701,7 +701,7 @@ pw_mangohud_check () {
 }
 
 pw_vkbasalt_check () {
-    if [[ "${ENABLE_VKBASALT}" == 1 ]] && [[ "${PW_VULKAN_USE}" != "0" ]] && [[ "${PW_VULKAN_USE}" != "3" ]] ; then
+    if [[ "${ENABLE_VKBASALT}" == "1" ]] ; then
         export VKBASALT_CONFIG_FILE="${PORT_WINE_PATH}/data/vkBasalt.conf"
         if ! grep "${PW_PLUGINS_PATH}/reshade" "${VKBASALT_CONFIG_FILE}" &>/dev/null
         then sed -ri "s|= .*/reshade|= \"${PW_PLUGINS_PATH}\"/reshade|g" "${VKBASALT_CONFIG_FILE}"
@@ -1003,16 +1003,24 @@ pw_check_and_download_dxvk_and_vkd3d () {
     fi
 
     #Download DGVOODOO2
-    if [ ! -d "${PW_VULKAN_DIR}/dgvoodoo2-v${DGV2_VER}" ] ; then
+    if [ ! -d "${PW_VULKAN_DIR}/dgvoodoo2-${DGV2_VER}" ] ; then
         print_info "Download and install DGVOODOO2 v.${DGV2_VER}"
-        if try_download "https://github.com/lutris/dgvoodoo2/releases/download/v${DGV2_VER}/dgvoodoo2-v${DGV2_VER}.tar.xz" \
-        "${PW_VULKAN_DIR}/dgvoodoo2-v${DGV2_VER}.tar.xz"
+        DGV2_DOWNLOAD=$(echo ${DGV2_VER} | tr '.' '_')
+        if try_download "https://github.com/dege-diosg/dgVoodoo2/releases/download/v${DGV2_VER}/dgVoodoo${DGV2_DOWNLOAD}.zip" \
+        "${PW_VULKAN_DIR}/dgvoodoo2-${DGV2_VER}.zip"
         then
-            if unpack "${PW_VULKAN_DIR}/dgvoodoo2-v${DGV2_VER}.tar.xz" "${PW_VULKAN_DIR}" ; then
-                try_remove_file "${PW_VULKAN_DIR}/dgvoodoo2-v${DGV2_VER}.tar.xz"
+            if "$pw_7z" x -y "${PW_VULKAN_DIR}/dgvoodoo2-${DGV2_VER}.zip" -o"${PW_VULKAN_DIR}/dgvoodoo2-tmp" ; then
+                try_remove_file "${PW_VULKAN_DIR}/dgvoodoo2-${DGV2_VER}.zip"
+                mkdir -p "${PW_VULKAN_DIR}/dgvoodoo2-${DGV2_VER}/x32"
+                for DGV2_DLL in Glide Glide2x Glide3x D3D8 D3D9 D3DImm DDraw ; do
+                mv -f "${PW_VULKAN_DIR}/dgvoodoo2-tmp/3Dfx/x86/${DGV2_DLL}.dll" "${PW_VULKAN_DIR}/dgvoodoo2-${DGV2_VER}/x32/${DGV2_DLL,,}.dll"
+                mv -f "${PW_VULKAN_DIR}/dgvoodoo2-tmp/MS/x86/${DGV2_DLL}.dll" "${PW_VULKAN_DIR}/dgvoodoo2-${DGV2_VER}/x32/${DGV2_DLL,,}.dll"
+                done
+                try_remove_dir "${PW_VULKAN_DIR}/dgvoodoo2-tmp"
             else
-                try_remove_file "${PW_VULKAN_DIR}/dgvoodoo2-v${DGV2_VER}.tar.xz"
-                try_remove_dir "${PW_VULKAN_DIR}/dgvoodoo2-v${DGV2_VER}"
+                try_remove_file "${PW_VULKAN_DIR}/dgvoodoo2-${DGV2_VER}.zip"
+                try_remove_dir "${PW_VULKAN_DIR}/dgvoodoo2-${DGV2_VER}"
+                try_remove_dir "${PW_VULKAN_DIR}/dgvoodoo2-tmp"
 
                 yad_error_download && pw_check_and_download_dxvk_and_vkd3d || exit 1
             fi
@@ -1932,44 +1940,60 @@ start_portwine () {
     try_force_link_file "${PHYSX_PATH}/cudart32_65.dll" "${WINEPREFIX}/drive_c/windows/syswow64/"
     try_force_link_file "${PHYSX_PATH}/cudart64_65.dll" "${WINEPREFIX}/drive_c/windows/system32/"
 
-    unset CP_VKD3D_FILES CP_DXVK_FILES CP_D8VK_FILES CP_WINE_FILES PATH_TO_VKD3D_FILES PATH_TO_DXVK_FILES
+    unset CP_VKD3D_FILES CP_DXVK_FILES CP_D8VK_FILES CP_DGV2_FILES CP_WINE_FILES
+    unset PATH_TO_DXVK_FILES PATH_TO_VKD3D_FILES PATH_TO_GALLIUM_NINE_FILES
     case "${PW_VULKAN_USE}" in
         0)  # WINED3D OPENGL
             print_info "Use WINED3D OpenGL"
-            export GL_YIELD="NOTHING"
-            export mesa_glthread=true
-            export WINE_D3D_CONFIG='renderer=gl'
+            PATH_TO_VKD3D_FILES="${PW_VULKAN_DIR}/vkd3d-proton-${VKD3D_GIT_VER}"
+            CP_DGV2_FILES="glide glide2x glide3x"
+            CP_VKD3D_FILES="libvkd3d-1 libvkd3d-shader-1"
             CP_WINE_FILES="ddraw d3d8 d3d11 d3d10core d3d10_1 d3d10 d3d9 dxgi d3d12 d3d12core"
+            export __GL_YIELD="NOTHING"
+            export mesa_glthread="true"
+            export WINE_D3D_CONFIG="renderer=gl"
+            export ENABLE_VKBASALT="0"
             ;;
         1)  # STABLE DXVK AND VKD3D
+            print_info "DGVOODOO2 v.${DGV2_VER} in use"
             print_info "DXVK v.${DXVK_STABLE_VER} in use"
             print_info "VKD3D-PROTON v.${VKD3D_STABLE_VER} in use"
             PATH_TO_DXVK_FILES="${PW_VULKAN_DIR}/dxvk-${DXVK_STABLE_VER}"
             PATH_TO_VKD3D_FILES="${PW_VULKAN_DIR}/vkd3d-proton-${VKD3D_STABLE_VER}"
-            CP_VKD3D_FILES="d3d12 d3d12core libvkd3d-1 libvkd3d-shader-1"
+            CP_DGV2_FILES="ddraw d3dimm d3d8 glide glide2x glide3x"
             CP_DXVK_FILES="d3d11 d3d10core d3d9 dxgi openvr_api_dxvk"
-            CP_D8VK_FILES="d3d8"
-            CP_WINE_FILES="ddraw d3d10_1 d3d10"
+            CP_VKD3D_FILES="d3d12 libvkd3d-shader-1"
+            CP_WINE_FILES="d3d10_1 d3d10"
             ;;
         2)  # NEWEST DXVK AND VKD3D
+            print_info "DGVOODOO2 v.${DGV2_VER} in use"
+            print_info "D8VK v.${D8VK_VER} in use"
             print_info "DXVK v.${DXVK_GIT_VER} in use"
             print_info "VKD3D-PROTON v.${VKD3D_GIT_VER} in use"
             PATH_TO_DXVK_FILES="${PW_VULKAN_DIR}/dxvk-${DXVK_GIT_VER}"
             PATH_TO_VKD3D_FILES="${PW_VULKAN_DIR}/vkd3d-proton-${VKD3D_GIT_VER}"
-            CP_VKD3D_FILES="d3d12 d3d12core libvkd3d-1 libvkd3d-shader-1"
-            CP_DXVK_FILES="d3d11 d3d10core d3d9 dxgi openvr_api_dxvk"
+            CP_DGV2_FILES="ddraw d3dimm glide glide2x glide3x"
             CP_D8VK_FILES="d3d8"
-            CP_WINE_FILES="ddraw d3d10_1 d3d10"
+            CP_DXVK_FILES="d3d11 d3d10core d3d9 dxgi openvr_api_dxvk"
+            CP_VKD3D_FILES="d3d12 d3d12core libvkd3d-1 libvkd3d-shader-1"
+            CP_WINE_FILES="d3d10_1 d3d10"
             ;;
         3)  # GALLIUM NINE
             print_info "Use GALLIUM-NINE (Native DX9 on MESA drivers)"
+            PATH_TO_GALLIUM_NINE_FILES="${PW_PLUGINS_PATH}/gallium_nine_v.${PW_GALLIUM_NINE_VER}"
+            PATH_TO_VKD3D_FILES="${PW_VULKAN_DIR}/vkd3d-proton-${VKD3D_GIT_VER}"
+            try_copy_file "${PATH_TO_GALLIUM_NINE_FILES}/lib32/d3d9-nine.dll.so" "${WINEPREFIX}/drive_c/windows/syswow64/d3d9.dll"
+            try_copy_file "${PATH_TO_GALLIUM_NINE_FILES}/lib64/d3d9-nine.dll.so" "${WINEPREFIX}/drive_c/windows/system32/d3d9.dll"
+            CP_DGV2_FILES="glide glide2x glide3x"
+            CP_VKD3D_FILES="libvkd3d-1 libvkd3d-shader-1"
             CP_WINE_FILES="ddraw d3d8 d3d11 d3d10core d3d10_1 d3d10 dxgi d3d12 d3d12core"
-            PW_GALLIUM_NINE_PATH="${PW_PLUGINS_PATH}/gallium_nine_v.${PW_GALLIUM_NINE_VER}"
-            try_force_link_file "${PW_GALLIUM_NINE_PATH}/lib32/d3d9-nine.dll.so" "${WINEPREFIX}/drive_c/windows/syswow64/d3d9.dll"
-            try_force_link_file "${PW_GALLIUM_NINE_PATH}/lib64/d3d9-nine.dll.so" "${WINEPREFIX}/drive_c/windows/system32/d3d9.dll"
-            var_winedlloverride_update "d3d9=n"
+            export __GL_YIELD="NOTHING"
+            export mesa_glthread="true"
+            export WINE_D3D_CONFIG="renderer=gl"
+            export ENABLE_VKBASALT="0"
+            export PW_MANGOHUD="0"
+            export PW_WINE_FULLSCREEN_FSR="0"
             unset FIND_D3D_MODULE D3D_MODULE_PATH
-
             if ! check_flatpak ; then
                 FIND_D3D_MODULE=$(dirname $(find /usr/ -maxdepth 4 -type f -name "d3dadapter9.so.*") 2>/dev/null)
                 if [[ ! -z "$FIND_D3D_MODULE" ]] ; then
@@ -1977,8 +2001,8 @@ start_portwine () {
                     IFS=$'\n'
                     for D3D_MP in $FIND_D3D_MODULE ; do
                         if [[ ! -z "$D3D_MODULE_PATH" ]]
-                        then D3D_MODULE_PATH="$D3D_MODULE_PATH:/run/host${D3D_MP}"
-                        else D3D_MODULE_PATH="/run/host${D3D_MP}"
+                        then export D3D_MODULE_PATH="$D3D_MODULE_PATH:/run/host${D3D_MP}"
+                        else export D3D_MODULE_PATH="/run/host${D3D_MP}"
                         fi
                     done
                     IFS=$old_IFS
@@ -1992,43 +2016,41 @@ start_portwine () {
                 export D3D_MODULE_PATH="/app/lib/i386-linux-gnu/GL/default/lib/d3d:/usr/lib/x86_64-linux-gnu/GL/default/lib/d3d"
                 print_info "D3D_MODULE_PATH=${D3D_MODULE_PATH}"
             fi
-            export mesa_glthread=true
-            export ENABLE_VKBASALT=0
-            export PW_MANGOHUD=0
-            export WINE_FULLSCREEN_FSR=0
+            var_winedlloverride_update "d3d9=n"
             ;;
         4)  # GALLIUM ZINK
             print_info "Use GALLIUM-ZINK (OpenGL on MESA vulkan drivers)"
+            PATH_TO_VKD3D_FILES="${PW_VULKAN_DIR}/vkd3d-proton-${VKD3D_GIT_VER}"
+            CP_DGV2_FILES="glide glide2x glide3x"
+            CP_VKD3D_FILES="libvkd3d-1 libvkd3d-shader-1"
             CP_WINE_FILES="ddraw d3d8 d3d11 d3d10core d3d10_1 d3d10 d3d9 dxgi d3d12 d3d12core"
-            export GL_YIELD="NOTHING"
-            export mesa_glthread=true
-            export WINE_D3D_CONFIG='renderer=gl'
+            export __GL_YIELD="NOTHING"
+            export mesa_glthread="true"
+            export WINE_D3D_CONFIG="renderer=gl"
             export  __GLX_VENDOR_LIBRARY_NAME=mesa
             export MESA_LOADER_DRIVER_OVERRIDE=zink
-            if ! check_wayland_session \
-            || [[ "${PW_USE_GAMESCOPE}" != "1" ]]
-            then
+            if ! check_wayland_session && [[ "${PW_USE_GAMESCOPE}" != "1" ]] ; then
                 export LIBGL_KOPPER_DRI2="1"
             fi
             ;;
-        5)  # LEGACY DXVK AND DGVOODOO2
-            print_info "DXVK v.${DXVK_LEGACY_VER} in use"
+        5)  # LEGACY DXVK
             print_info "DGVOODOO2 v.${DGV2_VER} in use"
+            print_info "DXVK v.${DXVK_LEGACY_VER} in use"
             PATH_TO_DXVK_FILES="${PW_VULKAN_DIR}/dxvk-${DXVK_LEGACY_VER}"
-            PATH_TO_DGV2_FILES="${PW_VULKAN_DIR}/dgvoodoo2-v${DGV2_VER}"
-            CP_DGV2_FILES="ddraw d3dimm glide glide2x glide3x"
+            PATH_TO_VKD3D_FILES="${PW_VULKAN_DIR}/vkd3d-proton-${VKD3D_GIT_VER}"
+            CP_DGV2_FILES="ddraw d3dimm d3d8 glide glide2x glide3x"
             CP_DXVK_FILES="d3d11 d3d10core d3d10_1 d3d10 d3d9 dxgi"
-            CP_WINE_FILES="d3d8 d3d12 d3d12core"
+            CP_VKD3D_FILES="libvkd3d-1 libvkd3d-shader-1"
+            CP_WINE_FILES="d3d12 d3d12core"
             ;;
         6)  # WINED3D VULKAN (DAMAVAND)
+            print_info "DGVOODOO2 v.${DGV2_VER} in use"
             print_info "Use DAMAVAND (DirectX to wined3d vulkan)"
-            CP_WINE_FILES="ddraw d3d8 d3d11 d3d10core d3d10_1 d3d10 d3d9 dxgi d3d12 d3d12core"
-            export WINE_D3D_CONFIG='renderer=vulkan'
-            ;;
-        7)  # LEGACY DXVK
-            print_info "DXVK v.${DXVK_LEGACY_VER} in use"
-            PATH_TO_DXVK_FILES="${PW_VULKAN_DIR}/dxvk-${DXVK_LEGACY_VER}"
-            CP_DXVK_FILES="d3d11 d3d10core d3d10_1 d3d10 d3d9 dxgi"
+            PATH_TO_VKD3D_FILES="${PW_VULKAN_DIR}/vkd3d-proton-${VKD3D_GIT_VER}"
+            CP_DGV2_FILES="ddraw d3dimm d3d8 d3d9 glide glide2x glide3x"
+            CP_VKD3D_FILES="libvkd3d-1 libvkd3d-shader-1"
+            CP_WINE_FILES="d3d11 d3d10core d3d10_1 d3d10 dxgi d3d12 d3d12core"
+            export WINE_D3D_CONFIG="renderer=vulkan"
             ;;
     esac
 
@@ -2082,22 +2104,22 @@ start_portwine () {
     fi
 
     if [[ ! -z "$CP_D8VK_FILES" ]] ; then
-        print_info "Try link native D8VK file..."
+        print_info "Try copy native D8VK files..."
         PATH_TO_D8VK_FILES="${PW_VULKAN_DIR}/d8vk-${D8VK_VER}"
         for wine_d8vk_dll in $CP_D8VK_FILES ; do
-            try_force_link_file "${PATH_TO_D8VK_FILES}/x32/${wine_d8vk_dll}.dll" "${WINEPREFIX}/drive_c/windows/syswow64/"
-            try_force_link_file "${PATH_TO_D8VK_FILES}/x64/${wine_d8vk_dll}.dll" "${WINEPREFIX}/drive_c/windows/system32/"
+            try_copy_file "${PATH_TO_D8VK_FILES}/x32/${wine_d8vk_dll}.dll" "${WINEPREFIX}/drive_c/windows/syswow64/"
+            try_copy_file "${PATH_TO_D8VK_FILES}/x64/${wine_d8vk_dll}.dll" "${WINEPREFIX}/drive_c/windows/system32/"
             var_winedlloverride_update "${wine_d8vk_dll}=n"
         done
     fi
 
     if [[ ! -z "$CP_DGV2_FILES" ]] ; then
-        print_info "Try copy native DGVOODOO2 file..."
-        PATH_TO_DGV2_FILES="${PW_VULKAN_DIR}/dgvoodoo2-v${DGV2_VER}"
+        print_info "Try copy native DGVOODOO2 files..."
+        PATH_TO_DGV2_FILES="${PW_VULKAN_DIR}/dgvoodoo2-${DGV2_VER}"
         for wine_dgv2_dll in $CP_DGV2_FILES ; do
             try_copy_file "${PATH_TO_DGV2_FILES}/x32/${wine_dgv2_dll}.dll" "${WINEPREFIX}/drive_c/windows/syswow64/"
+            var_winedlloverride_update "${wine_dgv2_dll}=n"
         done
-
         if [[ ! -f "${WINEPREFIX}/drive_c/windows/syswow64/dgVoodoo.conf" ]] ; then
             echo "[General]
 OutputAPI                            = d3d11_fl11_0
@@ -2107,7 +2129,6 @@ OutputAPI                            = d3d11_fl11_0
 [DirectX]
 dgVoodooWatermark                   = false" > "${WINEPREFIX}/drive_c/windows/syswow64/dgVoodoo.conf"
         fi
-        var_winedlloverride_update "ddraw=n"
     fi
 
     if [[ ! -d "${WINEPREFIX}/drive_c/vrclient/bin" ]] ; then
@@ -2703,8 +2724,7 @@ pw_gui_for_edit_db () {
     PW_USE_SYSTEM_VK_LAYERS_INFO=$(eval_gettext 'Use system mangohud, vkBasalt, obs-vkcapture and other applications using vulkan layers')
     PW_USE_OBS_VKCAPTURE_INFO=$(eval_gettext 'Enable the ability to write to OBS Studio using obs-vkcapture (ATTENTION: the forced use of system mangohud, vkBasalt, obs-vkcapture and other applications using vulkan layers will be enabled)')
     PW_DISABLE_COMPOSITING_INFO=$(eval_gettext 'Disable desktop compositing (effects). It often improves performance.')
-    PW_USE_GAMESCOPE_INFO=$(eval_gettext "
-<b>Super + F :</b> Toggle fullscreen
+    PW_USE_GAMESCOPE_INFO=$(eval_gettext '<b>Super + F :</b> Toggle fullscreen
 <b>Super + N :</b> Toggle nearest neighbour filtering
 <b>Super + U :</b> Toggle FSR upscaling
 <b>Super + Y :</b> Toggle NIS upscaling
@@ -2712,7 +2732,7 @@ pw_gui_for_edit_db () {
 <b>Super + O :</b> Decrease FSR sharpness by 1
 <b>Super + S :</b> Take screenshot (currently goes to /tmp/gamescope_DATE.png)
 <b>Super + G :</b> Toggle keyboard grab
-<b>Super + C :</b> Update clipboard")
+<b>Super + C :</b> Update clipboard')
 
     edit_db_field_add () {
         for int_to_boole in $@ ; do
@@ -3646,19 +3666,17 @@ portwine_start_debug () {
     if [[ "${PW_VULKAN_USE}" = "0" ]] ; then
         echo "PW_VULKAN_USE=${PW_VULKAN_USE} - DirectX to wined3d opengl" >> "${PORT_WINE_PATH}/PortProton.log"
     elif [[ "${PW_VULKAN_USE}" = "1" ]] ; then
-        echo "PW_VULKAN_USE=${PW_VULKAN_USE} - DXVK v.${DXVK_STABLE_VER} and VKD3D-PROTON v.${VKD3D_STABLE_VER}" >> "${PORT_WINE_PATH}/PortProton.log"
+        echo "PW_VULKAN_USE=${PW_VULKAN_USE} - DXVK v.${DXVK_STABLE_VER}, VKD3D-PROTON v.${VKD3D_STABLE_VER}" >> "${PORT_WINE_PATH}/PortProton.log"
     elif [[ "${PW_VULKAN_USE}" = "2" ]] ; then
-        echo "PW_VULKAN_USE=${PW_VULKAN_USE} - DXVK v.${DXVK_GIT_VER} and VKD3D-PROTON v.${VKD3D_GIT_VER}" >> "${PORT_WINE_PATH}/PortProton.log"
+        echo "PW_VULKAN_USE=${PW_VULKAN_USE} - DXVK v.${DXVK_GIT_VER}, VKD3D-PROTON v.${VKD3D_GIT_VER}" >> "${PORT_WINE_PATH}/PortProton.log"
     elif [[ "${PW_VULKAN_USE}" = "3" ]] ; then
         echo "PW_VULKAN_USE=${PW_VULKAN_USE} - Native DX9 on MESA drivers" >> "${PORT_WINE_PATH}/PortProton.log"
     elif [[ "${PW_VULKAN_USE}" = "4" ]] ; then
         echo "PW_VULKAN_USE=${PW_VULKAN_USE} - OpenGL on MESA vulkan drivers" >> "${PORT_WINE_PATH}/PortProton.log"
     elif [[ "${PW_VULKAN_USE}" = "5" ]] ; then
-        echo "PW_VULKAN_USE=${PW_VULKAN_USE} - DXVK v.${DXVK_LEGACY_VER} and DGVOODOO2 v.${DGV2_VER}" >> "${PORT_WINE_PATH}/PortProton.log"
+        echo "PW_VULKAN_USE=${PW_VULKAN_USE} - DXVK v.${DXVK_LEGACY_VER}" >> "${PORT_WINE_PATH}/PortProton.log"
     elif [[ "${PW_VULKAN_USE}" = "6" ]] ; then
         echo "PW_VULKAN_USE=${PW_VULKAN_USE} - DirectX to wined3d vulkan" >> "${PORT_WINE_PATH}/PortProton.log"
-    elif [[ "${PW_VULKAN_USE}" = "7" ]] ; then
-        echo "PW_VULKAN_USE=${PW_VULKAN_USE} - DXVK v.${DXVK_LEGACY_VER}" >> "${PORT_WINE_PATH}/PortProton.log"
     else
         echo "PW_VULKAN_USE=${PW_VULKAN_USE}" >> "${PORT_WINE_PATH}/PortProton.log"
     fi
@@ -3833,16 +3851,19 @@ EOF
 }
 
 pw_edit_db () {
-    PW_EDIT_DB_LIST="PW_MANGOHUD PW_MANGOHUD_USER_CONF ENABLE_VKBASALT PW_VKBASALT_USER_CONF PW_NO_ESYNC PW_NO_FSYNC PW_USE_RAY_TRACING PW_USE_NVAPI_AND_DLSS PW_USE_FAKE_DLSS PW_USE_FAKE_DLSS_3 PW_WINE_FULLSCREEN_FSR PW_HIDE_NVIDIA_GPU PW_VIRTUAL_DESKTOP PW_USE_TERMINAL PW_GUI_DISABLED_CS PW_USE_GAMEMODE PW_USE_D3D_EXTRAS PW_FIX_VIDEO_IN_GAME PW_REDUCE_PULSE_LATENCY PW_USE_US_LAYOUT PW_USE_GSTREAMER PW_FORCE_LARGE_ADDRESS_AWARE PW_USE_SHADER_CACHE PW_USE_WINE_DXGI PW_USE_EAC_AND_BE PW_USE_SYSTEM_VK_LAYERS PW_USE_OBS_VKCAPTURE PW_USE_GAMESCOPE PW_DISABLE_COMPOSITING PW_USE_RUNTIME"
-
+    PW_EDIT_DB_LIST="PW_MANGOHUD PW_MANGOHUD_USER_CONF ENABLE_VKBASALT PW_VKBASALT_USER_CONF PW_NO_ESYNC PW_NO_FSYNC
+    PW_USE_RAY_TRACING PW_USE_NVAPI_AND_DLSS PW_USE_FAKE_DLSS PW_USE_FAKE_DLSS_3 PW_WINE_FULLSCREEN_FSR PW_HIDE_NVIDIA_GPU
+    PW_VIRTUAL_DESKTOP PW_USE_TERMINAL PW_GUI_DISABLED_CS PW_USE_GAMEMODE PW_USE_D3D_EXTRAS PW_FIX_VIDEO_IN_GAME
+    PW_REDUCE_PULSE_LATENCY PW_USE_US_LAYOUT PW_USE_GSTREAMER PW_FORCE_LARGE_ADDRESS_AWARE PW_USE_SHADER_CACHE
+    PW_USE_WINE_DXGI PW_USE_EAC_AND_BE PW_USE_SYSTEM_VK_LAYERS PW_USE_OBS_VKCAPTURE PW_USE_GAMESCOPE PW_DISABLE_COMPOSITING
+    PW_USE_RUNTIME
+    "
     if check_wayland_session ; then
         rm_from_var PW_EDIT_DB_LIST "PW_USE_US_LAYOUT"
     fi
-
     if check_flatpak ; then
         rm_from_var PW_EDIT_DB_LIST "PW_USE_RUNTIME"
     fi
-
     pw_gui_for_edit_db $PW_EDIT_DB_LIST
 
     # PW_FORCE_USE_VSYNC HEAP_DELAY_FREE
diff --git a/data_from_portwine/scripts/start.sh b/data_from_portwine/scripts/start.sh
index 74c56b41..0c7c07ef 100755
--- a/data_from_portwine/scripts/start.sh
+++ b/data_from_portwine/scripts/start.sh
@@ -347,20 +347,22 @@ popd 1>/dev/null || fatal
 
 check_nvidia_rtx && check_variables PW_VULKAN_USE "2"
 
-SORT_OPENGL="$(eval_gettext "OPENGL (For video cards without VULKAN)")"
-SORT_LEGACY="$(eval_gettext "Legacy") DXVK ${DXVK_LEGACY_VER}, DGVOODOO2 ${DGV2_VER} (Vulkan v1.1)"
+SORT_OPENGL="$(eval_gettext "WINED3D OPENGL (For video cards without VULKAN)")"
+SORT_VULKAN="$(eval_gettext "WINED3D VULKAN (DAMAVAND)")"
+SORT_LEGACY="$(eval_gettext "Legacy") DXVK ${DXVK_LEGACY_VER} (Vulkan v1.1)"
 SORT_STABLE="$(eval_gettext "Stable") DXVK ${DXVK_STABLE_VER}, VKD3D ${VKD3D_STABLE_VER} (Vulkan v1.2)"
 SORT_NEWEST="$(eval_gettext "Newest") DXVK ${DXVK_GIT_VER}, VKD3D ${VKD3D_GIT_VER} (Vulkan v1.3)"
 SORT_G_NINE="$(eval_gettext "GALLIUM_NINE (DX9 for MESA)")"
 SORT_G_ZINK="$(eval_gettext "GALLIUM_ZINK (OpenGL for VULKAN)")"
 
 case "${PW_VULKAN_USE}" in
-    0) PW_DEFAULT_VULKAN_USE="$SORT_OPENGL!$SORT_NEWEST!$SORT_STABLE!$SORT_LEGACY!$SORT_G_ZINK!$SORT_G_NINE" ;;
-    1) PW_DEFAULT_VULKAN_USE="$SORT_STABLE!$SORT_NEWEST!$SORT_LEGACY!$SORT_G_ZINK!$SORT_G_NINE!$SORT_OPENGL" ;;
-    5) PW_DEFAULT_VULKAN_USE="$SORT_LEGACY!$SORT_NEWEST!$SORT_STABLE!$SORT_G_ZINK!$SORT_G_NINE!$SORT_OPENGL" ;;
-    4) PW_DEFAULT_VULKAN_USE="$SORT_G_ZINK!$SORT_NEWEST!$SORT_STABLE!$SORT_LEGACY!$SORT_G_NINE!$SORT_OPENGL" ;;
-    3) PW_DEFAULT_VULKAN_USE="$SORT_G_NINE!$SORT_NEWEST!$SORT_STABLE!$SORT_LEGACY!$SORT_G_ZINK!$SORT_OPENGL" ;;
-    *) PW_DEFAULT_VULKAN_USE="$SORT_NEWEST!$SORT_STABLE!$SORT_LEGACY!$SORT_G_ZINK!$SORT_G_NINE!$SORT_OPENGL" ;;
+    0) PW_DEFAULT_VULKAN_USE="$SORT_OPENGL!$SORT_NEWEST!$SORT_STABLE!$SORT_LEGACY!$SORT_G_ZINK!$SORT_G_NINE!$SORT_VULKAN" ;;
+    6) PW_DEFAULT_VULKAN_USE="$SORT_VULKAN!$SORT_NEWEST!$SORT_STABLE!$SORT_LEGACY!$SORT_G_ZINK!$SORT_G_NINE!$SORT_OPENGL" ;;
+    1) PW_DEFAULT_VULKAN_USE="$SORT_STABLE!$SORT_NEWEST!$SORT_LEGACY!$SORT_G_ZINK!$SORT_G_NINE!$SORT_OPENGL!$SORT_VULKAN" ;;
+    5) PW_DEFAULT_VULKAN_USE="$SORT_LEGACY!$SORT_NEWEST!$SORT_STABLE!$SORT_G_ZINK!$SORT_G_NINE!$SORT_OPENGL!$SORT_VULKAN" ;;
+    4) PW_DEFAULT_VULKAN_USE="$SORT_G_ZINK!$SORT_NEWEST!$SORT_STABLE!$SORT_LEGACY!$SORT_G_NINE!$SORT_OPENGL!$SORT_VULKAN" ;;
+    3) PW_DEFAULT_VULKAN_USE="$SORT_G_NINE!$SORT_NEWEST!$SORT_STABLE!$SORT_LEGACY!$SORT_G_ZINK!$SORT_OPENGL!$SORT_VULKAN" ;;
+    *) PW_DEFAULT_VULKAN_USE="$SORT_NEWEST!$SORT_STABLE!$SORT_LEGACY!$SORT_G_ZINK!$SORT_G_NINE!$SORT_OPENGL!$SORT_VULKAN" ;;
 esac
 
 if [[ ! -z "${PORTWINE_DB_FILE}" ]] ; then
@@ -604,6 +606,7 @@ case "${VULKAN_MOD}" in
     "$SORT_G_NINE" )     export PW_VULKAN_USE="3" ;;
     "$SORT_G_ZINK" )     export PW_VULKAN_USE="4" ;;
     "$SORT_LEGACY" )     export PW_VULKAN_USE="5" ;;
+    "$SORT_VULKAN" )     export PW_VULKAN_USE="6" ;;
 esac
 
 init_wine_ver
diff --git a/data_from_portwine/scripts/var b/data_from_portwine/scripts/var
index f5fd0b98..215ce204 100755
--- a/data_from_portwine/scripts/var
+++ b/data_from_portwine/scripts/var
@@ -50,7 +50,7 @@ export PW_WINE_FULLSCREEN_FSR="1"
 ###DXVK_AND_VKD3D###
 export VKD3D_LIMIT_TESS_FACTORS="64"
 export D8VK_VER="1.7.1-2367"
-export DGV2_VER="2.8.2"
+export DGV2_VER="2.81.3"
 export DXVK_LEGACY_VER="1.6.1"
 export DXVK_STABLE_VER="1.10.3-28"
 export DXVK_GIT_VER="2.3.1-9"