diff --git a/data_from_portwine/scripts/functions_helper b/data_from_portwine/scripts/functions_helper index 04409e94..9b7bdf40 100755 --- a/data_from_portwine/scripts/functions_helper +++ b/data_from_portwine/scripts/functions_helper @@ -718,7 +718,7 @@ var_vkd3d_config_update () { var_radv_perftest_config_update () { if echo "$RADV_PERFTEST" | grep "$1" then return 0 - else export RADV_PERFTEST="${1}${RADV_PERFTEST:+;$RADV_PERFTEST}" + else export RADV_PERFTEST="${1}${RADV_PERFTEST:+,$RADV_PERFTEST}" fi } @@ -2800,6 +2800,13 @@ pw_check_vulkan () { fi } +pw_check_vulkan_extensions () { + if sed -n "/deviceName \+ = $PW_GPU_USE/,/GPU/p" "${PW_TMPFS_PATH}/vulkaninfo.tmp" | grep -w "$1" &>/dev/null + then return 0 + else return 1 + fi +} + compare_versions () { IFS='.' read -ra a1 <<< "$1" IFS='.' read -ra a2 <<< "$2" @@ -2870,8 +2877,7 @@ pw_check_dxvk () { *) other_group+=("$elem") ;; esac done - unset SELECTED_VULKAN_GPU - SELECTED_VULKAN_GPU_NEW=( + SELECTED_VULKAN_GPU=( "${nvidia_group[@]}" "${amd_group[@]}" "${intel_group[@]}" @@ -2880,14 +2886,34 @@ pw_check_dxvk () { fi # получаем информацию о конкретном драйвере который выбран в PW_GPU_USE, # либо ищем наилучший драйвер с учётом приоритета видеокарт + информация - mapfile -t PW_VULKAN_DRIVER_ARRAY < <(awk ' - /apiVersion|driverVersion/ { print $3 } - /deviceName|driverName|driverInfo/ { - split($0, parts, "= ") - print parts[2] + mapfile -t PW_VULKAN_DRIVER_ARRAY < <(awk '/^GPU[0-9]+/ { + if (count == 5) { + # Выводим собранные значения перед переходом к следующему GPU + for (i = 1; i <= 5; i++) print values[i] + } + # Сбрасываем счетчик и массив значений для нового GPU + count = 0 + delete values + next + } + + count < 5 { + if (/apiVersion|driverVersion/) { + values[++count] = $3 + } else if (/deviceName|driverName|driverInfo/) { + split($0, parts, "= ") + values[++count] = parts[2] + } + } + + END { + # Выводим значения для последнего GPU, если набралось 5 + if (count == 5) { + for (i = 1; i <= 5; i++) print values[i] + } }' "${PW_TMPFS_PATH}/vulkaninfo.tmp") - for i in "${SELECTED_VULKAN_GPU_NEW[@]}" "${SELECTED_VULKAN_GPU[@]}" ; do + for i in "${SELECTED_VULKAN_GPU[@]}" ; do x="0" && y="5" while true ; do PW_VULKAN_DRIVER_ARRAY_CHECK=("${PW_VULKAN_DRIVER_ARRAY[@]:x:y}") @@ -3727,7 +3753,12 @@ start_portwine () { if [[ "${PW_USE_RAY_TRACING}" == "1" ]] ; then var_vkd3d_config_update dxr - var_radv_perftest_config_update rt + if [[ $(check_vendor_gpu) == "amd" ]] ; then + var_radv_perftest_config_update rt + if ! pw_check_vulkan_extensions "VK_KHR_ray_tracing_pipeline" ; then + var_radv_perftest_config_update emulate_rt + fi + fi else var_vkd3d_config_update nodxr fi @@ -3767,9 +3798,14 @@ start_portwine () { [[ "${PW_MANGOHUD_USER_CONF}" == 1 ]] && unset MANGOHUD_CONFIG [[ "${PW_VKBASALT_USER_CONF}" == 1 ]] && unset PW_VKBASALT_EFFECTS PW_VKBASALT_FFX_CAS - if [[ "${PW_GPU_USE}" != "disabled" ]] && [[ "${PW_AMD_VULKAN_USE}" == "disabled" ]] ; then - export DXVK_FILTER_DEVICE_NAME="${PW_GPU_USE}" - export VKD3D_FILTER_DEVICE_NAME="${PW_GPU_USE}" + if [[ -n $PW_GPU_USE && $PW_GPU_USE != "disabled" ]] \ + && [[ -z $PW_AMD_VULKAN_USE || $PW_AMD_VULKAN_USE == "disabled" ]] ; then + export DXVK_FILTER_DEVICE_NAME="$PW_GPU_USE" + export VKD3D_FILTER_DEVICE_NAME="$PW_GPU_USE" + export PW_vendorID="$(grep -B3 "$PW_GPU_USE" "${PW_TMPFS_PATH}/vulkaninfo.tmp" | grep vendorID | sort -u | awk -F'0x' '{print $2}')" + export PW_deviceID="$(grep -B3 "$PW_GPU_USE" "${PW_TMPFS_PATH}/vulkaninfo.tmp" | grep deviceID | sort -u | awk -F'0x' '{print $2}')" + export MESA_VK_DEVICE_SELECT_FORCE_DEFAULT_DEVICE="1" + export MESA_VK_DEVICE_SELECT="$PW_vendorID:$PW_deviceID" fi if [[ -f "$PATH_TO_GAME/dxvk.conf" ]] ; then @@ -3790,9 +3826,11 @@ start_portwine () { export WEBKIT_DISABLE_DMABUF_RENDERER="1" #Для того чтобы OpenGL всегда работал через nvidia (если в PW_GPU_USE выбрана nvidia) export __NV_PRIME_RENDER_OFFLOAD="1" + export __VK_LAYER_NV_optimus="NVIDIA_only" export __GLX_VENDOR_LIBRARY_NAME="nvidia" else export __NV_PRIME_RENDER_OFFLOAD="0" + export __VK_LAYER_NV_optimus="non_NVIDIA_only" fi if check_gamescope_session ; then @@ -4539,9 +4577,8 @@ fi fi if check_wayland_session \ - && [[ $PW_USE_NATIVE_WAYLAND == "1" || $PW_USE_DXVK_HDR == "1" ]] + && [[ $PW_USE_NATIVE_WAYLAND == "1" ]] then - [[ $PW_USE_DXVK_HDR == "1" ]] && export DXVK_HDR="1" export WINE_WAYLAND_HACKS="1" var_winedlloverride_update "winex11.drv=d;winewayland.drv=b" get_and_set_reg_file --add 'Software\Wine\Drivers' 'Graphics' 'REG_SZ' "x11,wayland" "user" @@ -4626,7 +4663,7 @@ fi if [[ $(check_vendor_gpu) == "amd" ]] ; then export RADV_DEBUG+="nodcc " export AMD_DEBUG="nodcc" - if [[ ! $(<"${PW_TMPFS_PATH}/vulkaninfo.tmp") =~ VK_EXT_image_drm_format_modifier ]] ; then + if ! pw_check_vulkan_extensions "VK_EXT_image_drm_format_modifier" ; then export R600_DEBUG="nodcc" grep -e '--backend' "${PW_TMPFS_PATH}/gamescope.tmp" &>/dev/null && PW_GS_BACKEND_SDL="1" fi @@ -4644,8 +4681,6 @@ fi && ! check_gamescope_session then if [[ "${PW_GPU_USE}" != "disabled" ]] ; then - PW_vendorID="$(grep -B3 "${PW_GPU_USE}" "${PW_TMPFS_PATH}/vulkaninfo.tmp" | grep vendorID | sort -u | awk -F'0x' '{print $2}')" - PW_deviceID="$(grep -B3 "${PW_GPU_USE}" "${PW_TMPFS_PATH}/vulkaninfo.tmp" | grep deviceID | sort -u | awk -F'0x' '{print $2}')" PW_ID_VIDEO=" --prefer-vk-device ${PW_vendorID}:${PW_deviceID}" else PW_ID_VIDEO="" @@ -4657,14 +4692,8 @@ fi [[ "${PW_GS_BORDERLESS_WINDOW}" == "1" ]] && PW_GAMESCOPE_ARGS_NEW+=" -b" [[ "${PW_GS_FORCE_GRAB_CURSOR}" == "1" ]] && PW_GAMESCOPE_ARGS_NEW+=" --force-grab-cursor" [[ "${PW_GS_FORCE_GRAB_KEYBOARD}" == "1" ]] && PW_GAMESCOPE_ARGS_NEW+=" -g" - - if [[ "${PW_GS_HDR_ENABLE}" == "1" ]] ; then - PW_GAMESCOPE_ARGS_NEW+=" --hdr-enabled" - export DXVK_HDR="1" - fi - + [[ "${PW_GS_HDR_ENABLE}" == "1" ]] && PW_GAMESCOPE_ARGS_NEW+=" --hdr-enabled" [[ "${PW_GS_ENABLE_GAMESCOPE_WSI}" == "1" ]] && export ENABLE_GAMESCOPE_WSI="1" - [[ "${PW_GS_HDR_ITM_ENABLE}" == "1" ]] && PW_GAMESCOPE_ARGS_NEW+=" --hdr-itm-enable" [[ "${PW_GS_SDR_GAMMUT_WIDENESS}" == "1" ]] && PW_GAMESCOPE_ARGS_NEW+=" --sdr-gamut-wideness" [[ "${PW_GS_FORCE_COMPOSITION}" == "1" ]] && PW_GAMESCOPE_ARGS_NEW+=" --force-composition" @@ -5559,12 +5588,12 @@ gui_edit_db () { PW_USE_GAMEMODE 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_GALLIUM_ZINK PW_USE_GALLIUM_NINE - PW_USE_WINED3D_VULKAN PW_USE_SUPPLIED_DXVK_VKD3D PW_USE_NATIVE_WAYLAND PW_USE_DXVK_HDR PW_GAMESCOPE + PW_USE_WINED3D_VULKAN PW_USE_SUPPLIED_DXVK_VKD3D PW_USE_NATIVE_WAYLAND PW_GAMESCOPE ) if check_wayland_session then rm_from_array "PW_EDIT_DB_LIST" PW_USE_US_LAYOUT - else rm_from_array "PW_EDIT_DB_LIST" PW_USE_NATIVE_WAYLAND PW_USE_DXVK_HDR + else rm_from_array "PW_EDIT_DB_LIST" PW_USE_NATIVE_WAYLAND fi if [[ $PW_WINE_USE =~ (PROTON_LG|WINE_LG) ]] || [[ $PW_VULKAN_USE == "0" ]] ; then rm_from_array "PW_EDIT_DB_LIST" PW_USE_SUPPLIED_DXVK_VKD3D @@ -5615,7 +5644,6 @@ 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]} - PW_USE_DXVK_HDR_INFO=${translations[Enable HDR settings in games with native Wayland]} PW_USE_GALLIUM_ZINK_INFO=${translations[Use Gallium Zink (OpenGL driver is implemented via Vulkan)]} PW_USE_GALLIUM_NINE_INFO=${translations[Use Gallium Nine (native DirectX 9 for MESA)]} PW_USE_WINED3D_VULKAN_INFO=${translations[Instead of DXVK, use WineD3D vulkan (Damavand). Experimental function.]} diff --git a/data_from_portwine/scripts/pw_autoinstall/PW_ANOMALY_ZONE b/data_from_portwine/scripts/pw_autoinstall/PW_ANOMALY_ZONE index 60adb531..c2d1eef8 100755 --- a/data_from_portwine/scripts/pw_autoinstall/PW_ANOMALY_ZONE +++ b/data_from_portwine/scripts/pw_autoinstall/PW_ANOMALY_ZONE @@ -6,6 +6,7 @@ # info_en: An action game about stalkers, where players explore mysterious worlds and fight against a variety of opponents. The game offers an exciting storyline and the opportunity to improve the character by unlocking new abilities and equipment. # info_ru: Экшен-игра про сталкеров, где игроки исследуют таинственные миры и сражаются с разнообразными противниками. Игра предлагает захватывающий сюжет и возможность улучшать персонажа, открывая новые способности и снаряжение. ######################################################################## +export PW_PREFIX_NAME="ANOMALY_ZONE" export LAUNCH_PARAMETERS="/VERYSILENT /SUPPRESSMSGBOXES /NORESTART /SP-" export PW_AUTOINSTALL_EXE="${PW_USER_TEMP}/az_webinst.exe" export PORTWINE_CREATE_SHORTCUT_NAME="Anomaly Zone" @@ -16,7 +17,7 @@ then pw_start_progress_bar_install_game "Anomaly Zone." pw_kill_autostart Launcher.exe & pw_run "${PW_AUTOINSTALL_EXE}" - portwine_exe="$WINEPREFIX/drive_c/Program Files (x86)/Cybertime Games/Anomaly-Zone/Launcher.exe" + portwine_exe="$WINEPREFIX/drive_c/Program Files/New Story Games/Anomaly-Zone/Launcher.exe" pw_create_unique_exe try_remove_file "${PW_AUTOINSTALL_EXE}" try_remove_file "${portwine_exe}.ppdb" diff --git a/data_from_portwine/scripts/pw_autoinstall/PW_GOOSE_GOOSE_DUCK b/data_from_portwine/scripts/pw_autoinstall/PW_GOOSE_GOOSE_DUCK index 6d2663c2..d8bb8946 100755 --- a/data_from_portwine/scripts/pw_autoinstall/PW_GOOSE_GOOSE_DUCK +++ b/data_from_portwine/scripts/pw_autoinstall/PW_GOOSE_GOOSE_DUCK @@ -11,7 +11,7 @@ export LAUNCH_PARAMETERS="/VERYSILENT /SUPPRESSMSGBOXES /NORESTART /SP-" export PW_AUTOINSTALL_EXE="${PW_USER_TEMP}/GGDInstaller.exe" export PORTWINE_CREATE_SHORTCUT_NAME="Goose Goose Duck" -VERSION="4.01.02" +VERSION="4.02.01" start_portwine if try_download "https://download-ggd.gaggle.gg/Goose%20Goose%20Duck%20Installer%20${VERSION}%20release.exe" "${PW_AUTOINSTALL_EXE}" no_mirror diff --git a/data_from_portwine/scripts/pw_autoinstall/PW_VKPLAY b/data_from_portwine/scripts/pw_autoinstall/PW_VKPLAY index 932e5b75..1bf41f62 100755 --- a/data_from_portwine/scripts/pw_autoinstall/PW_VKPLAY +++ b/data_from_portwine/scripts/pw_autoinstall/PW_VKPLAY @@ -1,24 +1,26 @@ #!/usr/bin/env bash # Author: chal55rus (Sergey P.) # type: games -# name: vkPlay Games Center +# name: VK Play Games Center # image: mygames # info_en: Launcher for the VK Play game library. # info_ru: Лаунчер для библиотеки игр VK Play. ######################################################################## export PW_PREFIX_NAME="VK_PLAY" +# export LAUNCH_PARAMETERS="" export PW_AUTOINSTALL_EXE="${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/drive_c/users/steamuser/AppData/Local/VKPlayLoader.exe" +export PORTWINE_CREATE_SHORTCUT_NAME="VK Play" + export WINEDLLOVERRIDES="mscoree,mshtml=" export PW_MUST_HAVE_DLL="" export PW_WINE_USE="WINE_LG" start_portwine -if try_download "https://static.gc.my.games/VKPlayLoader.exe" "${PW_AUTOINSTALL_EXE}" no_mirror +if try_download "https://static.gc.vkplay.ru/VKPlayLoader.exe" "${PW_AUTOINSTALL_EXE}" no_mirror then portwine_exe="$WINEPREFIX/drive_c/users/steamuser/AppData/Local/VKPlayLoader.exe" try_remove_file "${portwine_exe}.ppdb" pw_stop_progress_bar - export PORTWINE_CREATE_SHORTCUT_NAME="vkPlay" portwine_create_shortcut fi stop_portwine diff --git a/data_from_portwine/scripts/var b/data_from_portwine/scripts/var index b655722d..bd314c0f 100755 --- a/data_from_portwine/scripts/var +++ b/data_from_portwine/scripts/var @@ -57,6 +57,7 @@ export PW_WINE_LG_VER="WINE_LG_10-12" export PW_WINE_FULLSCREEN_FSR="1" export WINE_FULLSCREEN_FSR_MODE="ultra" ###DXVK_AND_VKD3D### +export DXVK_HDR="1" export VKD3D_LIMIT_TESS_FACTORS="64" export DXVK_NEW_VER="2.7-46" export DXVK_OLD_VER="2.6.2"