From 595363adbf23242734cb49bec5419c2ede8d59e1 Mon Sep 17 00:00:00 2001 From: Htylol Date: Fri, 30 May 2025 01:30:29 +0500 Subject: [PATCH] Many changes for 3D api --- data_from_portwine/scripts/functions_helper | 89 +++++++++++---------- data_from_portwine/scripts/start.sh | 11 +-- data_from_portwine/scripts/var | 2 + 3 files changed, 54 insertions(+), 48 deletions(-) diff --git a/data_from_portwine/scripts/functions_helper b/data_from_portwine/scripts/functions_helper index 42d1f253..ed3b19e4 100755 --- a/data_from_portwine/scripts/functions_helper +++ b/data_from_portwine/scripts/functions_helper @@ -3668,38 +3668,42 @@ start_portwine () { CP_VKD3D_FILES="libvkd3d-1 libvkd3d-shader-1" CP_WINE_FILES="d3d12 d3d12core d3d8" ;; - 4) - # GALLIUM ZINK AND WINED3D VULKAN - print_info "Use GALLIUM-ZINK (OpenGL on MESA vulkan drivers)" - 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="d3d12 d3d12core d3d11 d3d10core d3d10_1 d3d10 d3d9 d3d8 dxgi" - 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" - if ! check_wayland_session \ - && ! check_gamescope_session \ - && [[ "${PW_GAMESCOPE}" != "1" ]] - then - export LIBGL_KOPPER_DRI2="1" - fi - if [[ $(check_vendor_gpu) =~ nouveau ]] ; then - export NOUVEAU_USE_ZINK="1" - fi esac + if [[ $PW_USE_GALLIUM_ZINK == "1" ]] \ + || [[ $PW_USE_GALLIUM_NINE == "1" ]] \ + || [[ $PW_USE_WINED3D_VULKAN == "1" ]] ; then + 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" + fi + + # GALLIUM ZINK + if [[ $PW_USE_GALLIUM_ZINK == "1" ]] ; then + print_info "Use GALLIUM-ZINK (OpenGL on MESA vulkan drivers)" + 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" + export GALLIUM_DRIVER="zink" + if ! check_wayland_session \ + && ! check_gamescope_session \ + && [[ "${PW_GAMESCOPE}" != "1" ]] + then + export LIBGL_KOPPER_DRI2="1" + fi + if [[ $(check_vendor_gpu) =~ nouveau ]] ; then + export NOUVEAU_USE_ZINK="1" + fi + fi + # GALLIUM NINE if [[ $PW_USE_GALLIUM_NINE == "1" ]] ; then print_info "Use GALLIUM-NINE (Native DX9 on MESA drivers)" - unset PATH_TO_DXVK_FILES CP_DXVK_FILES - PATH_TO_VKD3D_FILES="${PW_VULKAN_DIR}/vkd3d-proton-${VKD3D_GIT_VER}" + rm_from_var CP_WINE_FILES "d3d9" 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" @@ -3710,9 +3714,15 @@ start_portwine () { export PW_USE_VRCLIENT="0" fi + # WINED3D VULKAN + if [[ $PW_USE_WINED3D_VULKAN == "1" ]] ; then + print_info "Use DAMAVAND (DirectX to wined3d vulkan)" + export WINE_D3D_CONFIG="renderer=vulkan" + fi + if [[ $PW_USE_SUPPLIED_DXVK_VKD3D == "1" ]] \ - && [[ ! $PW_WINE_USE =~ (PROTON_LG|WINE_LG) ]] \ - && [[ ! $PW_VULKAN_USE =~ (0|4) ]] && [[ $PW_USE_GALLIUM_NINE != "1" ]] \ + && [[ ! $PW_WINE_USE =~ (PROTON_LG|WINE_LG) ]] && [[ $PW_VULKAN_USE != 0 ]] \ + && [[ $PW_USE_GALLIUM_ZINK != "1" ]] && [[ $PW_USE_GALLIUM_NINE != "1" ]] && [[ $PW_USE_WINED3D_VULKAN != "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 @@ -3764,11 +3774,10 @@ start_portwine () { if [[ $PW_USE_GALLIUM_NINE == "1" ]] ; then rm_from_var CP_GALLIUM_NINE_FILES "d3d9" rm_from_var CP_WINE_FILES "d3d8" + elif [[ $PW_USE_GALLIUM_ZINK == "1" ]] || [[ $PW_USE_WINED3D_VULKAN == "1" ]] ; then + rm_from_var CP_WINE_FILES "d3d9 d3d8" elif [[ $PW_USE_SUPPLIED_DXVK_VKD3D != "0" ]] ; then - if [[ $PW_VULKAN_USE = "4" ]] - then rm_from_var CP_WINE_FILES "d3d9" - else rm_from_var CP_DXVK_FILES "d3d9" - fi + rm_from_var CP_DXVK_FILES "d3d9" else case "${PW_VULKAN_USE}" in 0) @@ -3785,9 +3794,6 @@ start_portwine () { rm_from_var CP_DXVK_FILES "d3d9" rm_from_var CP_WINE_FILES "d3d8" ;; - 4) - rm_from_var CP_WINE_FILES "d3d9 d3d8" - ;; esac fi fi @@ -5188,7 +5194,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_NINE - PW_USE_SUPPLIED_DXVK_VKD3D + PW_USE_GALLIUM_ZINK PW_USE_WINED3D_VULKAN PW_USE_SUPPLIED_DXVK_VKD3D ) if check_wayland_session @@ -5242,6 +5248,8 @@ gui_edit_db () { 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_NINE_INFO=${translations[Use Gallium Nine (native DirectX 9 for MESA)]} + PW_USE_GALLIUM_ZINK_INFO=${translations[Use Gallium Zink (OpenGL driver is implemented via Vulkan)]} + PW_USE_WINED3D_VULKAN_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]} @@ -5253,13 +5261,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" + DISABLE_EDIT_DB_LIST="PW_VKBASALT PW_VKBASALT_USER_CONF PW_USE_RAY_TRACING PW_USE_OBS_VKCAPTURE PW_USE_GALLIUM_ZINK PW_USE_WINED3D_VULKAN" ;; 1|2) # Stable, Newest VKD3D_CB="CB" ;; - 3|4) + 3) # Legacy VKD3D_CB="DCB" DISABLE_EDIT_DB_LIST="PW_USE_RAY_TRACING" @@ -5267,7 +5275,7 @@ gui_edit_db () { esac if [[ $PW_WINE_USE =~ (PROTON_LG|WINE_LG) ]] \ - || [[ $PW_VULKAN_USE =~ (0|4) ]] ; then + || [[ $PW_VULKAN_USE == "0" ]] ; then DISABLE_EDIT_DB_LIST+=" PW_USE_SUPPLIED_DXVK_VKD3D" fi @@ -5859,7 +5867,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|3|4) + 0|3) DISABLE_DGV2_LIST="PW_DGV2_USE_DX12 " ;; @@ -6886,7 +6894,6 @@ portwine_start_debug () { 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} - DXVK v.${DXVK_LEGACY_VER}" >> "${PORT_WINE_PATH}/PortProton.log" ;; - 4) echo "PW_VULKAN_USE=${PW_VULKAN_USE} - Gallium Zink and WineD3D Vulkan" >> "${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 aafa9fff..257290b6 100755 --- a/data_from_portwine/scripts/start.sh +++ b/data_from_portwine/scripts/start.sh @@ -509,17 +509,15 @@ then DIST_ADD_TO_GUI+="!${translations[USE_SYSTEM_WINE]}" fi SORT_OPENGL="${translations[WineD3D OpenGL (For video cards without Vulkan)]}" -SORT_VULKAN="${translations[Gallium Zink and WineD3D Vulkan (Damavand)]}" SORT_LEGACY="${translations[Legacy DXVK (Vulkan v1.1)]}" SORT_STABLE="${translations[Stable DXVK, VKD3D (Vulkan v1.2)]}" 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!$SORT_VULKAN" ;; - 1) PW_DEFAULT_VULKAN_USE="$SORT_STABLE!$SORT_NEWEST!$SORT_LEGACY!$SORT_VULKAN!$SORT_OPENGL" ;; - 3) PW_DEFAULT_VULKAN_USE="$SORT_LEGACY!$SORT_NEWEST!$SORT_STABLE!$SORT_VULKAN!$SORT_OPENGL" ;; - 4) PW_DEFAULT_VULKAN_USE="$SORT_VULKAN!$SORT_NEWEST!$SORT_STABLE!$SORT_LEGACY!$SORT_OPENGL" ;; - *) PW_DEFAULT_VULKAN_USE="$SORT_NEWEST!$SORT_STABLE!$SORT_LEGACY!$SORT_VULKAN!$SORT_OPENGL" ;; + 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" ;; + 3) PW_DEFAULT_VULKAN_USE="$SORT_LEGACY!$SORT_NEWEST!$SORT_STABLE!$SORT_OPENGL" ;; + *) PW_DEFAULT_VULKAN_USE="$SORT_NEWEST!$SORT_STABLE!$SORT_LEGACY!$SORT_OPENGL" ;; esac if [[ $PW_WINE_USE == PROTON_LG ]] ; then @@ -961,7 +959,6 @@ case "${VULKAN_MOD}" in "$SORT_STABLE" ) export PW_VULKAN_USE="1" ;; "$SORT_NEWEST" ) export PW_VULKAN_USE="2" ;; "$SORT_LEGACY" ) export PW_VULKAN_USE="3" ;; - "$SORT_VULKAN" ) export PW_VULKAN_USE="4" ;; esac init_wine_ver diff --git a/data_from_portwine/scripts/var b/data_from_portwine/scripts/var index d66d4598..ba870a68 100755 --- a/data_from_portwine/scripts/var +++ b/data_from_portwine/scripts/var @@ -39,6 +39,8 @@ export PW_DINPUT_PROTOCOL="0" export PW_USE_VRCLIENT="0" export STAGING_SHARED_MEMORY="1" export PW_USE_GALLIUM_NINE="0" +export PW_USE_GALLIUM_ZINK="0" +export PW_USE_WINED3D_VULKAN="0" export PW_USE_SUPPLIED_DXVK_VKD3D="1" ###DEFAULT_WINE### export PW_WINE_USE="PROTON_LG"