From 5763749aa027ea35f86079c6618df0f3747f3dad Mon Sep 17 00:00:00 2001 From: Mikhail Tergoev Date: Fri, 26 Sep 2025 14:44:14 +0300 Subject: [PATCH] updated init dxvk/vkd3d and fixed download from tty --- winehelper | 125 ++++++++++++++++++++++++----------------------------- 1 file changed, 56 insertions(+), 69 deletions(-) diff --git a/winehelper b/winehelper index 3cdff0e..18e385b 100755 --- a/winehelper +++ b/winehelper @@ -162,12 +162,10 @@ check_variables WINE_WIN_START "start /wait /high /unix" check_variables WINE_CPU_TOPOLOGY "8" -check_variables USE_RENDERER "opengl" # opengl, damavand, proton - -check_variables DXVK_VER "1.10.3-28" +check_variables DXVK_VER "none" # check_variables DXVK_CONFIG_FILE "path/to/dxvk.conf" -check_variables VKD3D_VER "1.1-2602" +check_variables VKD3D_VER "none" # check_variables VKD3D_LIMIT_TESS_FACTORS 64 # check_variables VKD3D_FEATURE_LEVEL "12_0" @@ -395,10 +393,14 @@ print_license_agreement () { } try_download () { - if [[ $WH_USE_GUI == "1" ]] \ - && [[ $(ps -o command= -p "$PPID" | awk '{print $2}') =~ "$DATA_PATH/winehelper_gui.py" ]] - then print_ok "Соглашения приняты из графического интерфейса." - else print_license_agreement + if [[ $1 != "cloud" ]] ; then + if [[ $WH_USE_GUI == "1" ]] \ + && [[ $(ps -o command= -p "$PPID" | awk '{print $2}') =~ "$DATA_PATH/winehelper_gui.py" ]] + then print_ok "Соглашения приняты из графического интерфейса." + else print_license_agreement + fi + else + shift fi local download_file_url output_file output_file_name download_file_url="${1// /%20}" @@ -762,31 +764,25 @@ run_installed_programs () { fi } -init_wined3d () { - if [[ "$USE_RENDERER" != "proton" ]] ; then - WINED3D_FILES="d3d8 d3d9 d3d10_1 d3d10 d3d10core d3d11 dxgi d3d12 d3d12core" - for wined3dfiles in $WINED3D_FILES ; do - try_copy_wine_dll_to_pfx_64 "$wined3dfiles.dll" - try_copy_wine_dll_to_pfx_32 "$wined3dfiles.dll" - done -# if [[ "$USE_RENDERER" == "damavand" ]] -# then export WINE_D3D_CONFIG="renderer=vulkan" -# else export WINE_D3D_CONFIG="renderer=gl" -# fi - return 0 - else - return 1 - fi +copy_wined3d () { + for wined3dfiles in $1 ; do + try_copy_wine_dll_to_pfx_64 "$wined3dfiles.dll" + try_copy_wine_dll_to_pfx_32 "$wined3dfiles.dll" + done } init_dxvk () { - check_variables USE_DXVK_VER "$1" + DXVK_VER="$1" + if [[ $DXVK_VER == "none" ]] ; then + copy_wined3d "d3d8 d3d9 d3d10_1 d3d10 d3d10core d3d11 dxgi" + return 0 + fi get_dxvk() { local DXVK_URL="$1" local DXVK_VAR_VER="$2" local DXVK_PACKAGE="${WH_VULKAN_LIBDIR}/${DXVK_VAR_VER}.tar.$(echo "${DXVK_URL#*.tar.}")" - if try_download "$DXVK_URL" "$DXVK_PACKAGE" check256sum \ + if try_download cloud "$DXVK_URL" "$DXVK_PACKAGE" check256sum \ && unpack "$DXVK_PACKAGE" "$WH_VULKAN_LIBDIR" then try_remove_file "$DXVK_PACKAGE" @@ -795,36 +791,37 @@ init_dxvk () { return 1 } - for DXVK_VAR_VER in "$USE_DXVK_VER" $@ ; do - if [[ ! -d "${WH_VULKAN_LIBDIR}/${DXVK_VAR_VER}" ]] ; then - get_dxvk "$CLOUD_URL/${DXVK_VAR_VER}.tar.xz" "$DXVK_VAR_VER" - fi - done + if [[ ! -d "${WH_VULKAN_LIBDIR}/${DXVK_VER}" ]] ; then + get_dxvk "$CLOUD_URL/${DXVK_VER}.tar.xz" "$DXVK_VER" + fi - if [[ "${WH_USE_WINE_DXGI}" == 1 ]] ; then + if [[ $WH_USE_WINE_DXGI == "1" ]] ; then DXVK_FILES="d3d9 d3d10_1 d3d10 d3d11" # dxvk_config openvr_api_dxvk" - try_copy_wine_dll_to_pfx_64 "dxgi.dll" - try_copy_wine_dll_to_pfx_32 "dxgi.dll" + copy_wined3d "dxgi" else DXVK_FILES="d3d9 d3d10_1 d3d10 d3d11 dxgi" # dxvk_config openvr_api_dxvk" fi for dxvkfiles in $DXVK_FILES ; do - try_copy_other_dll_to_pfx_64 "${WH_VULKAN_LIBDIR}/${USE_DXVK_VER}/x64/$dxvkfiles.dll" - if try_copy_other_dll_to_pfx_32 "${WH_VULKAN_LIBDIR}/${USE_DXVK_VER}/x32/$dxvkfiles.dll" + try_copy_other_dll_to_pfx_64 "${WH_VULKAN_LIBDIR}/${DXVK_VER}/x64/$dxvkfiles.dll" + if try_copy_other_dll_to_pfx_32 "${WH_VULKAN_LIBDIR}/${DXVK_VER}/x32/$dxvkfiles.dll" then var_winedlloverride_update "$dxvkfiles=n" fi done } init_vkd3d () { - check_variables USE_VKD3D_VER "$1" + VKD3D_VER="$1" + if [[ $VKD3D_VER == "none" ]] ; then + copy_wined3d "d3d12 d3d12core" + return 0 + fi get_vkd3d() { local VKD3D_URL="$1" local VKD3D_VAR_VER="$2" local VKD3D_PACKAGE="${WH_VULKAN_LIBDIR}/${VKD3D_VAR_VER}.tar.$(echo "${VKD3D_URL#*.tar.}")" - if try_download "$VKD3D_URL" "$VKD3D_PACKAGE" check256sum \ + if try_download cloud "$VKD3D_URL" "$VKD3D_PACKAGE" check256sum \ && unpack "$VKD3D_PACKAGE" "$WH_VULKAN_LIBDIR" then try_remove_file "$VKD3D_PACKAGE" @@ -833,16 +830,14 @@ init_vkd3d () { return 1 } - for VKD3D_VAR_VER in "$USE_VKD3D_VER" $@ ; do - if [[ ! -d "${WH_VULKAN_LIBDIR}/${VKD3D_VAR_VER}" ]] ; then - get_vkd3d "$CLOUD_URL/${VKD3D_VAR_VER}.tar.xz" "$VKD3D_VAR_VER" - fi - done + if [[ ! -d "${WH_VULKAN_LIBDIR}/${VKD3D_VER}" ]] ; then + get_vkd3d "$CLOUD_URL/${VKD3D_VER}.tar.xz" "$VKD3D_VER" + fi VKD3D_FILES="d3d12 d3d12core libvkd3d-shader-1 libvkd3d-1" # libvkd3d-proton-utils-3 for vkd3dfiles in $VKD3D_FILES ; do - try_copy_other_dll_to_pfx_64 "${WH_VULKAN_LIBDIR}/${USE_VKD3D_VER}/x64/$vkd3dfiles.dll" - if try_copy_other_dll_to_pfx_32 "${WH_VULKAN_LIBDIR}/${USE_VKD3D_VER}/x86/$vkd3dfiles.dll" + try_copy_other_dll_to_pfx_64 "${WH_VULKAN_LIBDIR}/${VKD3D_VER}/x64/$vkd3dfiles.dll" + if try_copy_other_dll_to_pfx_32 "${WH_VULKAN_LIBDIR}/${VKD3D_VER}/x86/$vkd3dfiles.dll" then var_winedlloverride_update "$vkd3dfiles=n" fi done @@ -857,7 +852,7 @@ init_wine_ver () { download_url="$CLOUD_URL/$WH_WINE_USE.tar.xz" wine_package="$WH_TMP_DIR/$WH_WINE_USE.tar.xz" - try_download "$download_url" "$wine_package" "check256sum" + try_download cloud "$download_url" "$wine_package" "check256sum" unpack "$wine_package" "$WH_DIST_DIR/" try_remove_file "$wine_package" @@ -910,7 +905,7 @@ init_wine_ver () { CPCSP_PROXY_NAME="wine-cpcsp_proxy-$CPCSP_PROXY_VER" CPCSP_PROXY_URL="$CLOUD_URL/$CPCSP_PROXY_NAME.tar.xz" - try_download "$CPCSP_PROXY_URL" "$WH_TMP_DIR/$CPCSP_PROXY_NAME.tar.xz" check256sum + try_download cloud "$CPCSP_PROXY_URL" "$WH_TMP_DIR/$CPCSP_PROXY_NAME.tar.xz" check256sum unpack "$WH_TMP_DIR/$CPCSP_PROXY_NAME.tar.xz" "$WH_TMP_DIR" cp -fr "$WH_TMP_DIR/$CPCSP_PROXY_NAME/"i386-* "$WINEDIR/lib/wine/" @@ -1283,7 +1278,7 @@ init_wineprefix () { echo "# переменные последнего использования префикса:" > "$WINEPREFIX/last.conf" for var in WH_WINE_USE BASE_PFX WINEARCH WH_WINDOWS_VER WINEESYNC WINEFSYNC \ STAGING_SHARED_MEMORY WINE_LARGE_ADDRESS_AWARE WH_USE_SHADER_CACHE WH_USE_WINE_DXGI \ - WINE_CPU_TOPOLOGY USE_RENDERER DXVK_VER VKD3D_VER WH_XDG_OPEN WH_USE_MESA_GL_OVERRIDE + WINE_CPU_TOPOLOGY DXVK_VER VKD3D_VER WH_XDG_OPEN WH_USE_MESA_GL_OVERRIDE do echo "export $var=\"${!var}\"" >> "$WINEPREFIX/last.conf" done @@ -1378,13 +1373,9 @@ prepair_wine () { init_wine_ver init_wineprefix use_winetricks + init_dxvk "$DXVK_VER" + init_vkd3d "$VKD3D_VER" - if init_wined3d ; then - : - else - init_dxvk "$DXVK_VER" - init_vkd3d "$VKD3D_VER" - fi [[ "$MANGOHUD" == 1 ]] && MANGOHUD_RUN="mangohud" } @@ -1404,9 +1395,9 @@ wine_run () { echo "##### Лог WINE #####" | tee -a "$LOG_FILE" $MANGOHUD_RUN "$WINELOADER" "$@" $LAUNCH_PARAMETERS 2>&1 | tee -a "$LOG_FILE" else - exec $MANGOHUD_RUN "$WINELOADER" "$@" $LAUNCH_PARAMETERS + $MANGOHUD_RUN "$WINELOADER" "$@" $LAUNCH_PARAMETERS fi - # wait_wineserver + wait_wineserver } wine_run_install () { @@ -2165,16 +2156,14 @@ run_install_dxvk() { fi check_prefix_var init_database + export DXVK_VER="$version" init_wine_ver init_wineprefix - if [[ "$version" == "none" ]] ; then - print_info "Удаление DXVK..." - init_wined3d - update_last_conf_var "DXVK_VER" "" - else - init_dxvk "$version" - update_last_conf_var "DXVK_VER" "$USE_DXVK_VER" + if [[ "$DXVK_VER" == "none" ]] + then print_info "Удаление DXVK..." + else print_info "Установка DXVK: $DXVK_VER" fi + init_dxvk "$DXVK_VER" wait_wineserver } @@ -2189,16 +2178,14 @@ run_install_vkd3d() { fi check_prefix_var init_database + export VKD3D_VER="$version" init_wine_ver init_wineprefix - if [[ "$version" == "none" ]] ; then - print_info "Удаление VKD3D..." - init_wined3d - update_last_conf_var "VKD3D_VER" "" - else - init_vkd3d "$version" - update_last_conf_var "VKD3D_VER" "$USE_VKD3D_VER" + if [[ "$VKD3D_VER" == "none" ]] + then print_info "Удаление VKD3D..." + else print_info "Установка VKD3D: $VKD3D_VER" fi + init_vkd3d "$VKD3D_VER" wait_wineserver }