From ea77d551368c00f55e834f00c85d194547ed0ef8 Mon Sep 17 00:00:00 2001
From: Htylol <dixperm909@yandex.ru>
Date: Sat, 24 May 2025 23:29:20 +0500
Subject: [PATCH] Combined damavand with gallium zink.

---
 data_from_portwine/scripts/functions_helper | 163 +++++++++-----------
 data_from_portwine/scripts/start.sh         |   4 +-
 data_from_portwine/scripts/var              |   1 -
 3 files changed, 79 insertions(+), 89 deletions(-)

diff --git a/data_from_portwine/scripts/functions_helper b/data_from_portwine/scripts/functions_helper
index ffbe7162..52452832 100755
--- a/data_from_portwine/scripts/functions_helper
+++ b/data_from_portwine/scripts/functions_helper
@@ -3627,85 +3627,62 @@ start_portwine () {
 
     # 3D API
     unset CP_VKD3D_FILES CP_DXVK_FILES CP_DGV2_FILES CP_WINE_FILES PATH_TO_DXVK_FILES PATH_TO_VKD3D_FILES CP_GALLIUM_NINE_FILES
-    [[ "$PW_USE_GALLIUM_NINE" == "1" ]] && PW_VULKAN_USE="3"
+    case "${PW_VULKAN_USE}" in
+        0)
+            # WINED3D OPENGL
+            print_info "Use WINED3D OpenGL"
+            PATH_TO_VKD3D_FILES="${PW_VULKAN_DIR}/vkd3d-proton-${VKD3D_GIT_VER}"
+            CP_VKD3D_FILES="libvkd3d-1 libvkd3d-shader-1"
+            CP_WINE_FILES="d3d12 d3d12core d3d11 d3d10core d3d10_1 d3d10 d3d9 d3d8 dxgi"
+            export __GL_YIELD="NOTHING"
+            export mesa_glthread="true"
+            export WINE_D3D_CONFIG="renderer=gl"
+            export PW_VKBASALT="0"
+            ;;
+        1)
+            # STABLE DXVK AND VKD3D
+            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_DXVK_FILES="d3d11 d3d10core d3d10_1 d3d10 d3d9 dxgi"
+            [[ "$PW_USE_VRCLIENT" = "1" ]] && add_to_var CP_DXVK_FILES "openvr_api_dxvk"
+            CP_VKD3D_FILES="d3d12 libvkd3d-shader-1"
+            CP_WINE_FILES="d3d12core d3d8"
+            ;;
+        2)
+            # NEWEST DXVK AND VKD3D
+            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_DXVK_FILES="d3d11 d3d10core d3d9 d3d8 dxgi"
+            [[ "$PW_USE_VRCLIENT" = "1" ]] && add_to_var CP_DXVK_FILES "openvr_api_dxvk"
+            CP_VKD3D_FILES="d3d12 d3d12core libvkd3d-1 libvkd3d-shader-1"
+            CP_WINE_FILES="d3d10_1 d3d10"
+            ;;
+        3)
+            # LEGACY DXVK
+            print_info "DXVK v.${DXVK_LEGACY_VER} in use"
+            PATH_TO_DXVK_FILES="${PW_VULKAN_DIR}/dxvk-${DXVK_LEGACY_VER}"
+            PATH_TO_VKD3D_FILES="${PW_VULKAN_DIR}/vkd3d-proton-${VKD3D_GIT_VER}"
+            CP_DXVK_FILES="d3d11 d3d10core d3d10_1 d3d10 d3d9 dxgi"
+            CP_VKD3D_FILES="libvkd3d-1 libvkd3d-shader-1"
+            CP_WINE_FILES="d3d12 d3d12core d3d8"
+            ;;
+    esac
 
-    if [[ $PW_USE_DAMAVAND == "1" ]] && [[ $PW_VULKAN_USE != "0" ]] ; then
-        # WINED3D VULKAN (DAMAVAND)
+    # GALLIUM ZINK
+    if [[ $PW_USE_GALLIUM_ZINK == "1" ]] && [[ $PW_USE_GALLIUM_NINE != "1" && $PW_VULKAN_USE != "0" ]] ; then
+        print_info "Use GALLIUM-ZINK (OpenGL on MESA vulkan drivers)"
         print_info "Use DAMAVAND (DirectX to wined3d vulkan)"
+        unset PATH_TO_DXVK_FILES CP_DXVK_FILES
         PATH_TO_VKD3D_FILES="${PW_VULKAN_DIR}/vkd3d-proton-${VKD3D_GIT_VER}"
         CP_VKD3D_FILES="libvkd3d-1 libvkd3d-shader-1"
         CP_WINE_FILES="d3d12 d3d12core d3d11 d3d10core d3d10_1 d3d10 d3d9 d3d8 dxgi"
-        export WINE_D3D_CONFIG="renderer=vulkan"
-    else
-        case "${PW_VULKAN_USE}" in
-            0)
-                # WINED3D OPENGL
-                print_info "Use WINED3D OpenGL"
-                PATH_TO_VKD3D_FILES="${PW_VULKAN_DIR}/vkd3d-proton-${VKD3D_GIT_VER}"
-                CP_VKD3D_FILES="libvkd3d-1 libvkd3d-shader-1"
-                CP_WINE_FILES="d3d12 d3d12core d3d11 d3d10core d3d10_1 d3d10 d3d9 d3d8 dxgi"
-                export __GL_YIELD="NOTHING"
-                export mesa_glthread="true"
-                export WINE_D3D_CONFIG="renderer=gl"
-                export PW_VKBASALT="0"
-                export PW_USE_GALLIUM_ZINK="0"
-                ;;
-            1)
-                # STABLE DXVK AND VKD3D
-                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_DXVK_FILES="d3d11 d3d10core d3d10_1 d3d10 d3d9 dxgi"
-                [[ "$PW_USE_VRCLIENT" = "1" ]] && add_to_var CP_DXVK_FILES "openvr_api_dxvk"
-                CP_VKD3D_FILES="d3d12 libvkd3d-shader-1"
-                CP_WINE_FILES="d3d12core d3d8"
-                ;;
-            2)
-                # NEWEST DXVK AND VKD3D
-                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_DXVK_FILES="d3d11 d3d10core d3d9 d3d8 dxgi"
-                [[ "$PW_USE_VRCLIENT" = "1" ]] && add_to_var CP_DXVK_FILES "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_VKD3D_FILES="${PW_VULKAN_DIR}/vkd3d-proton-${VKD3D_GIT_VER}"
-                CP_GALLIUM_NINE_FILES="d3d9"
-                CP_VKD3D_FILES="libvkd3d-1 libvkd3d-shader-1"
-                CP_WINE_FILES="d3d12 d3d12core d3d11 d3d10core d3d10_1 d3d10 d3d8 dxgi"
-                export __GL_YIELD="NOTHING"
-                export mesa_glthread="true"
-                export WINE_D3D_CONFIG="renderer=gl"
-                export PW_VKBASALT="0"
-                export PW_MANGOHUD="0"
-                export PW_WINE_FULLSCREEN_FSR="0"
-                export PW_USE_GALLIUM_ZINK="0"
-                export DXVK_ENABLE_NVAPI="0"
-                export PW_USE_VRCLIENT="0"
-                ;;
-            5)
-                # LEGACY DXVK
-                print_info "DXVK v.${DXVK_LEGACY_VER} in use"
-                PATH_TO_DXVK_FILES="${PW_VULKAN_DIR}/dxvk-${DXVK_LEGACY_VER}"
-                PATH_TO_VKD3D_FILES="${PW_VULKAN_DIR}/vkd3d-proton-${VKD3D_GIT_VER}"
-                CP_DXVK_FILES="d3d11 d3d10core d3d10_1 d3d10 d3d9 dxgi"
-                CP_VKD3D_FILES="libvkd3d-1 libvkd3d-shader-1"
-                CP_WINE_FILES="d3d12 d3d12core d3d8"
-                ;;
-        esac
-    fi
-
-    if [[ $PW_USE_GALLIUM_ZINK == "1" ]] ; then
-        # GALLIUM ZINK
-        print_info "Use GALLIUM-ZINK (OpenGL on MESA vulkan drivers)"
         export __GL_YIELD="NOTHING"
         export mesa_glthread="true"
+        export WINE_D3D_CONFIG="renderer=vulkan"
         export  __GLX_VENDOR_LIBRARY_NAME="mesa"
         export MESA_LOADER_DRIVER_OVERRIDE="zink"
         export GALLIUM_DRIVER="zink"
@@ -3720,9 +3697,26 @@ start_portwine () {
         fi
     fi
 
+    # GALLIUM NINE
+    if [[ $PW_USE_GALLIUM_NINE == "1" ]] ; then
+        print_info "Use GALLIUM-NINE (Native DX9 on MESA drivers)"
+        PATH_TO_VKD3D_FILES="${PW_VULKAN_DIR}/vkd3d-proton-${VKD3D_GIT_VER}"
+        CP_GALLIUM_NINE_FILES="d3d9"
+        CP_VKD3D_FILES="libvkd3d-1 libvkd3d-shader-1"
+        CP_WINE_FILES="d3d12 d3d12core d3d11 d3d10core d3d10_1 d3d10 d3d8 dxgi"
+        export __GL_YIELD="NOTHING"
+        export mesa_glthread="true"
+        export WINE_D3D_CONFIG="renderer=gl"
+        export PW_VKBASALT="0"
+        export PW_MANGOHUD="0"
+        export PW_WINE_FULLSCREEN_FSR="0"
+        export DXVK_ENABLE_NVAPI="0"
+        export PW_USE_VRCLIENT="0"
+    fi
+
     if [[ $PW_USE_SUPPLIED_DXVK_VKD3D == "1" ]] \
-    && [[ ! $PW_WINE_USE =~ (PROTON_LG|WINE_LG) ]] \
-    && [[ ! $PW_VULKAN_USE =~ (0|3) ]] \
+    && [[ ! $PW_WINE_USE =~ (PROTON_LG|WINE_LG) ]] && [[ $PW_VULKAN_USE != "0" ]] \
+    && [[ $PW_USE_GALLIUM_NINE != "1" && $PW_USE_GALLIUM_ZINK != "1"  ]] \
     && [[ -f "${WINEDIR}/lib64/wine/dxvk/d3d9.dll" || -f "${WINEDIR}/lib/wine/dxvk/x86_64-windows/d3d9.dll" ]] ; then
         export DXVK_ASYNC="1"
         if [[ -f "${WINEDIR}/lib64/wine/dxvk/d3d10.dll" && -f "${WINEDIR}/lib64/wine/dxvk/d3d10_1.dll" ]] ; then
@@ -3773,6 +3767,9 @@ start_portwine () {
 
             if [[ $PW_USE_SUPPLIED_DXVK_VKD3D != "0" ]] ; then
                 rm_from_var CP_DXVK_FILES "d3d9"
+            elif [[ $PW_USE_GALLIUM_NINE == "1" ]] ; then
+                rm_from_var CP_GALLIUM_NINE_FILES "d3d9"
+                rm_from_var CP_WINE_FILES "d3d8"
             else
                 case "${PW_VULKAN_USE}" in
                     0)
@@ -3786,10 +3783,6 @@ start_portwine () {
                         rm_from_var CP_DXVK_FILES "d3d9 d3d8"
                         ;;
                     3)
-                        rm_from_var CP_GALLIUM_NINE_FILES "d3d9"
-                        rm_from_var CP_WINE_FILES "d3d8"
-                        ;;
-                    5)
                         rm_from_var CP_DXVK_FILES "d3d9"
                         rm_from_var CP_WINE_FILES "d3d8"
                         ;;
@@ -5193,7 +5186,7 @@ gui_edit_db () {
     PW_USE_D3D_EXTRAS PW_FIX_VIDEO_IN_GAME PW_REDUCE_PULSE_LATENCY PW_USE_US_LAYOUT PW_USE_GSTREAMER
     PW_USE_SHADER_CACHE PW_USE_WINE_DXGI PW_USE_EAC_AND_BE PW_USE_SYSTEM_VK_LAYERS PW_USE_OBS_VKCAPTURE
     PW_DISABLE_COMPOSITING PW_USE_RUNTIME PW_DINPUT_PROTOCOL PW_USE_NATIVE_WAYLAND PW_USE_GALLIUM_ZINK PW_USE_GALLIUM_NINE
-    PW_USE_DAMAVAND PW_USE_SUPPLIED_DXVK_VKD3D
+    PW_USE_SUPPLIED_DXVK_VKD3D
     )
 
     if check_wayland_session
@@ -5246,9 +5239,8 @@ gui_edit_db () {
     PW_USE_RUNTIME_INFO=${translations[Use container launch mode (It is recommended not to change the value)]}
     PW_DINPUT_PROTOCOL_INFO=${translations[Force use DirectInput protocol instead of XInput]}
     PW_USE_NATIVE_WAYLAND_INFO=${translations[Enable experemental native Wayland support (need special wine build to work)]}
-    PW_USE_GALLIUM_ZINK_INFO=${translations[Use Gallium Zink (OpenGL driver is implemented via Vulkan)]}
+    PW_USE_GALLIUM_ZINK_INFO=${translations[Use Gallium Zink (OpenGL driver is implemented via Vulkan), also instead of dxvk WineD3D vulkan (Damavand) is used. This function does not work with Gallium Nine.]}
     PW_USE_GALLIUM_NINE_INFO=${translations[Use Gallium Nine (native DirectX 9 for MESA)]}
-    PW_USE_DAMAVAND_INFO=${translations[Instead of DXVK, use WineD3D vulkan (Damavand). Experimental function.]}
     PW_USE_SUPPLIED_DXVK_VKD3D_INFO=${translations[Use dxvk and vkd3d which are bundled with wine or proton. (Does not work with PROTON_LG and WINE_LG)]}
 
 #     PW_VULKAN_NO_ASYNC_INFO=${translations[Disable asynchronous calls for VULKAN and DXVK modes]}
@@ -5260,13 +5252,13 @@ gui_edit_db () {
         0)
             # WineD3D OpenGL
             VKD3D_CB="DCB"
-            DISABLE_EDIT_DB_LIST="PW_VKBASALT PW_VKBASALT_USER_CONF PW_USE_RAY_TRACING PW_USE_OBS_VKCAPTURE PW_USE_GALLIUM_ZINK PW_USE_DAMAVAND"
+            DISABLE_EDIT_DB_LIST="PW_VKBASALT PW_VKBASALT_USER_CONF PW_USE_RAY_TRACING PW_USE_OBS_VKCAPTURE PW_USE_GALLIUM_ZINK"
             ;;
         1|2)
             # Stable, Newest
             VKD3D_CB="CB"
             ;;
-        5)
+        3)
             # Legacy
             VKD3D_CB="DCB"
             DISABLE_EDIT_DB_LIST="PW_USE_RAY_TRACING"
@@ -5863,7 +5855,7 @@ gui_dgvoodoo2 () {
     [[ "${PW_DGV2_ANTIALIASING}" == "0" ]] && export PW_DGV2_ANTIALIASING="disabled" && edit_db_from_gui PW_DGV2_ANTIALIASING
 
     case "${PW_VULKAN_USE}" in
-        0|5)
+        0|3)
             DISABLE_DGV2_LIST="PW_DGV2_USE_DX12
             "
             ;;
@@ -6889,8 +6881,7 @@ portwine_start_debug () {
         0) echo "PW_VULKAN_USE=${PW_VULKAN_USE} - DirectX to wined3d opengl" >> "${PORT_WINE_PATH}/PortProton.log" ;;
         1) echo "PW_VULKAN_USE=${PW_VULKAN_USE} - DXVK v.${DXVK_STABLE_VER}, VKD3D-PROTON v.${VKD3D_STABLE_VER}" >> "${PORT_WINE_PATH}/PortProton.log" ;;
         2) echo "PW_VULKAN_USE=${PW_VULKAN_USE} - DXVK v.${DXVK_GIT_VER}, VKD3D-PROTON v.${VKD3D_GIT_VER}" >> "${PORT_WINE_PATH}/PortProton.log" ;;
-        3) echo "PW_VULKAN_USE=${PW_VULKAN_USE} - Native DX9 on MESA drivers" >> "${PORT_WINE_PATH}/PortProton.log" ;;
-        5) echo "PW_VULKAN_USE=${PW_VULKAN_USE} - DXVK v.${DXVK_LEGACY_VER}" >> "${PORT_WINE_PATH}/PortProton.log" ;;
+        3) echo "PW_VULKAN_USE=${PW_VULKAN_USE} - DXVK v.${DXVK_LEGACY_VER}" >> "${PORT_WINE_PATH}/PortProton.log" ;;
         *) echo "PW_VULKAN_USE=${PW_VULKAN_USE}" >> "${PORT_WINE_PATH}/PortProton.log" ;;
     esac
     echo "--------------------------------------------" >> "${PORT_WINE_PATH}/PortProton.log"
diff --git a/data_from_portwine/scripts/start.sh b/data_from_portwine/scripts/start.sh
index 5733e8ee..51f5ac31 100755
--- a/data_from_portwine/scripts/start.sh
+++ b/data_from_portwine/scripts/start.sh
@@ -516,8 +516,8 @@ SORT_NEWEST="${translations[Newest DXVK, VKD3D, D8VK (Vulkan v1.3+)]}"
 case "$PW_VULKAN_USE" in
     0) PW_DEFAULT_VULKAN_USE="$SORT_OPENGL!$SORT_NEWEST!$SORT_STABLE!$SORT_LEGACY" ;;
     1) PW_DEFAULT_VULKAN_USE="$SORT_STABLE!$SORT_NEWEST!$SORT_LEGACY!$SORT_OPENGL" ;;
-    5) PW_DEFAULT_VULKAN_USE="$SORT_LEGACY!$SORT_NEWEST!$SORT_STABLE!$SORT_OPENGL" ;;
     *) PW_DEFAULT_VULKAN_USE="$SORT_NEWEST!$SORT_STABLE!$SORT_LEGACY!$SORT_OPENGL" ;;
+    3) PW_DEFAULT_VULKAN_USE="$SORT_LEGACY!$SORT_NEWEST!$SORT_STABLE!$SORT_OPENGL" ;;
 esac
 
 if [[ $PW_WINE_USE == PROTON_LG ]] ; then
@@ -958,7 +958,7 @@ case "${VULKAN_MOD}" in
     "$SORT_OPENGL" )     export PW_VULKAN_USE="0" ;;
     "$SORT_STABLE" )     export PW_VULKAN_USE="1" ;;
     "$SORT_NEWEST" )     export PW_VULKAN_USE="2" ;;
-    "$SORT_LEGACY" )     export PW_VULKAN_USE="5" ;;
+    "$SORT_LEGACY" )     export PW_VULKAN_USE="3" ;;
 esac
 
 init_wine_ver
diff --git a/data_from_portwine/scripts/var b/data_from_portwine/scripts/var
index 886b1b04..7d7cbb6a 100755
--- a/data_from_portwine/scripts/var
+++ b/data_from_portwine/scripts/var
@@ -40,7 +40,6 @@ export PW_USE_VRCLIENT="0"
 export STAGING_SHARED_MEMORY="1"
 export PW_USE_GALLIUM_ZINK="0"
 export PW_USE_GALLIUM_NINE="0"
-export PW_USE_DAMAVAND="0"
 export PW_USE_SUPPLIED_DXVK_VKD3D="1"
 ###DEFAULT_WINE###
 export PW_WINE_USE="PROTON_LG"