From 7acd73a73ed9bb99e1911f27df7d16ecc10ad47f Mon Sep 17 00:00:00 2001 From: Htylol Date: Wed, 1 May 2024 13:06:16 +0500 Subject: [PATCH] Fix zink with gamescope,fix wined3d with proton 9+,d8vk on stable not working,minor fixes --- data_from_portwine/scripts/functions_helper | 150 ++++++++++---------- data_from_portwine/scripts/start.sh | 2 +- 2 files changed, 78 insertions(+), 74 deletions(-) diff --git a/data_from_portwine/scripts/functions_helper b/data_from_portwine/scripts/functions_helper index 74cf4a0e..62270a02 100755 --- a/data_from_portwine/scripts/functions_helper +++ b/data_from_portwine/scripts/functions_helper @@ -679,9 +679,7 @@ ${PW_PV_OVERRIDES}/i386-linux-gnu/aliases:\ } pw_mangohud_check () { - if [[ "${PW_MANGOHUD}" == "1" ]] \ - && ! check_gamescope_session - then + if [[ "${PW_MANGOHUD}" == "1" ]] && ! check_gamescope_session ; then export PW_MANGOHUD_SLR='MANGOHUD=1' MANGOHUD_LIB_NAME="libMangoHud.so" if [[ "${PW_VULKAN_USE}" = "0" ]] ; then @@ -701,7 +699,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}" @@ -1932,14 +1930,18 @@ 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_G_NINE_FILES CP_WINE_FILES + unset PATH_TO_DXVK_FILES PATH_TO_VKD3D_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_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 "DXVK v.${DXVK_STABLE_VER} in use" @@ -1948,10 +1950,10 @@ start_portwine () { PATH_TO_VKD3D_FILES="${PW_VULKAN_DIR}/vkd3d-proton-${VKD3D_STABLE_VER}" CP_VKD3D_FILES="d3d12 d3d12core libvkd3d-1 libvkd3d-shader-1" CP_DXVK_FILES="d3d11 d3d10core d3d9 dxgi openvr_api_dxvk" - CP_D8VK_FILES="d3d8" - CP_WINE_FILES="ddraw d3d10_1 d3d10" + CP_WINE_FILES="ddraw d3d8 d3d10_1 d3d10" ;; 2) # NEWEST DXVK AND VKD3D + 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}" @@ -1963,72 +1965,46 @@ start_portwine () { ;; 3) # GALLIUM NINE print_info "Use GALLIUM-NINE (Native DX9 on MESA drivers)" - 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" - 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 - old_IFS=$IFS - 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}" - fi - done - IFS=$old_IFS - print_info "D3D_MODULE_PATH=${D3D_MODULE_PATH}" - else - pw_stop_progress_bar - yad_error "$(eval_gettext "d3dadapter9.so.1.0.0 - Not found in the system.\nInstall the missing package: d3dadapter9")" - stop_portwine - fi - else - 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 + PATH_TO_VKD3D_FILES="${PW_VULKAN_DIR}/vkd3d-proton-${VKD3D_GIT_VER}" + CP_VKD3D_FILES="libvkd3d-1 libvkd3d-shader-1" + CP_G_NINE_FILES="d3d9" + CP_WINE_FILES="d3d8 d3d11 d3d10core d3d10_1 d3d10 dxgi d3d12 d3d12core" + export __GL_YIELD="NOTHING" + export mesa_glthread="true" + export WINE_D3D_CONFIG="renderer=gl" + export ENABLE_VKBASALT="0" + export PW_MANGOHUD="0" ;; 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_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" print_info "DGVOODOO2 v.${DGV2_VER} in use" + PATH_TO_VKD3D_FILES="${PW_VULKAN_DIR}/vkd3d-proton-${VKD3D_GIT_VER}" + CP_VKD3D_FILES="libvkd3d-1 libvkd3d-shader-1" 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" CP_DXVK_FILES="d3d11 d3d10core d3d10_1 d3d10 d3d9 dxgi" CP_WINE_FILES="d3d8 d3d12 d3d12core" ;; 6) # WINED3D VULKAN (DAMAVAND) print_info "Use DAMAVAND (DirectX to wined3d vulkan)" + PATH_TO_VKD3D_FILES="${PW_VULKAN_DIR}/vkd3d-proton-${VKD3D_GIT_VER}" + CP_VKD3D_FILES="libvkd3d-1 libvkd3d-shader-1" 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" + export WINE_D3D_CONFIG="renderer=vulkan" ;; esac @@ -2082,22 +2058,21 @@ 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..." + print_info "Try copy native DGVOODOO2 files..." PATH_TO_DGV2_FILES="${PW_VULKAN_DIR}/dgvoodoo2-v${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/" done - if [[ ! -f "${WINEPREFIX}/drive_c/windows/syswow64/dgVoodoo.conf" ]] ; then echo "[General] OutputAPI = d3d11_fl11_0 @@ -2110,6 +2085,37 @@ dgVoodooWatermark = false" > "${WINEPREFIX}/drive_c/windows/sy var_winedlloverride_update "ddraw=n" fi + if [[ "$CP_G_NINE_FILES" == "d3d9" ]] ; then + print_info "Try copy native GALLIUM-NINE files..." + PATH_TO_GALLIUM_NINE_FILES="${PW_PLUGINS_PATH}/gallium_nine_v.${PW_GALLIUM_NINE_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" + 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 + old_IFS=$IFS + IFS=$'\n' + for D3D_MP in $FIND_D3D_MODULE ; do + if [[ ! -z "$D3D_MODULE_PATH" ]] + 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 + print_info "D3D_MODULE_PATH=${D3D_MODULE_PATH}" + else + pw_stop_progress_bar + yad_error "$(eval_gettext "d3dadapter9.so.1.0.0 - Not found in the system.\nInstall the missing package: d3dadapter9")" + stop_portwine + fi + else + 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 + var_winedlloverride_update "d3d9=n" + fi + if [[ ! -d "${WINEPREFIX}/drive_c/vrclient/bin" ]] ; then create_new_dir "${WINEPREFIX}/drive_c/vrclient/bin" try_force_link_file "${WINEDIR}"/lib/wine/i386-windows/vrclient.dll "${WINEPREFIX}/drive_c/vrclient/bin/" @@ -2128,9 +2134,7 @@ dgVoodooWatermark = false" > "${WINEPREFIX}/drive_c/windows/sy export VKD3D_SHADER_CACHE_PATH="0" fi - if [[ "${PW_WINE_FULLSCREEN_FSR}" == "1" ]] \ - || [[ "${WINE_FULLSCREEN_FSR}" == "1" ]] - then + if [[ "${PW_WINE_FULLSCREEN_FSR}" == "1" ]] ; then export WINE_FULLSCREEN_FSR="1" export WINE_FULLSCREEN_FSR_STRENGTH="2" export WINE_FULLSCREEN_INTEGER_SCALING="0" @@ -2703,8 +2707,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 " -Super + F : Toggle fullscreen + PW_USE_GAMESCOPE_INFO=$(eval_gettext 'Super + F : Toggle fullscreen Super + N : Toggle nearest neighbour filtering Super + U : Toggle FSR upscaling Super + Y : Toggle NIS upscaling @@ -2712,7 +2715,7 @@ pw_gui_for_edit_db () { Super + O : Decrease FSR sharpness by 1 Super + S : Take screenshot (currently goes to /tmp/gamescope_DATE.png) Super + G : Toggle keyboard grab -Super + C : Update clipboard") +Super + C : Update clipboard') edit_db_field_add () { for int_to_boole in $@ ; do @@ -3657,8 +3660,6 @@ portwine_start_debug () { echo "PW_VULKAN_USE=${PW_VULKAN_USE} - DXVK v.${DXVK_LEGACY_VER} and DGVOODOO2 v.${DGV2_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 +3834,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..adcde6db 100755 --- a/data_from_portwine/scripts/start.sh +++ b/data_from_portwine/scripts/start.sh @@ -350,7 +350,7 @@ 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_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_NEWEST="$(eval_gettext "Newest") DXVK ${DXVK_GIT_VER}, VKD3D ${VKD3D_GIT_VER}, D8VK ${D8VK_VER} (Vulkan v1.3)" SORT_G_NINE="$(eval_gettext "GALLIUM_NINE (DX9 for MESA)")" SORT_G_ZINK="$(eval_gettext "GALLIUM_ZINK (OpenGL for VULKAN)")"