|
|
|
@@ -692,7 +692,7 @@ var_radv_perftest_config_update () {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var_pw_vk_istance_layers_config_update () {
|
|
|
|
|
if echo "$PW_VK_INSTANCE_LAYERS" | grep "$1"
|
|
|
|
|
if echo "$PW_VK_INSTANCE_LAYERS" | grep -q "$1"
|
|
|
|
|
then return 0
|
|
|
|
|
else export PW_VK_INSTANCE_LAYERS="${1}${PW_VK_INSTANCE_LAYERS:+:$PW_VK_INSTANCE_LAYERS}"
|
|
|
|
|
fi
|
|
|
|
@@ -1834,6 +1834,40 @@ pw_mangohud_check () {
|
|
|
|
|
return 0
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
set_to_dxvk_conf () {
|
|
|
|
|
case "$1" in
|
|
|
|
|
nvidia_old)
|
|
|
|
|
sed -i /'dxgi.customDeviceId =/c dxgi.customDeviceId = 222F' "${DXVK_CONFIG_FILE}"
|
|
|
|
|
sed -i /'dxgi.customVendorId =/c dxgi.customVendorId = 10de' "${DXVK_CONFIG_FILE}"
|
|
|
|
|
;;
|
|
|
|
|
|
|
|
|
|
nvidia_new)
|
|
|
|
|
sed -i /'dxgi.customDeviceDesc =/c dxgi.customDeviceDesc = "NVIDIA GeForce RTX 4090"' "${DXVK_CONFIG_FILE}"
|
|
|
|
|
sed -i /'dxgi.customDeviceId =/c dxgi.customDeviceId = 2684' "${DXVK_CONFIG_FILE}"
|
|
|
|
|
sed -i /'dxgi.customVendorId =/c dxgi.customVendorId = 10de' "${DXVK_CONFIG_FILE}"
|
|
|
|
|
sed -i /'dxgi.hideAmdGpu =/c dxgi.hideAmdGpu = True' "${DXVK_CONFIG_FILE}"
|
|
|
|
|
sed -i /'dxgi.hideNvidiaGpu =/c dxgi.hideNvidiaGpu = False' "${DXVK_CONFIG_FILE}"
|
|
|
|
|
export WINE_HIDE_NVIDIA_GPU="0"
|
|
|
|
|
export WINE_HIDE_AMD_GPU="1"
|
|
|
|
|
export DXVK_NVAPI_DRIVER_VERSION="99999"
|
|
|
|
|
export DXVK_NVAPI_ALLOW_OTHER_DRIVERS="1"
|
|
|
|
|
export WINEHAGS="1"
|
|
|
|
|
;;
|
|
|
|
|
|
|
|
|
|
low_latency)
|
|
|
|
|
# sed -i /'d3d11.cachedDynamicResources =/c d3d11.cachedDynamicResources = a' "${DXVK_CONFIG_FILE}"
|
|
|
|
|
sed -i /'dxgi.maxFrameLatency =/c dxgi.maxFrameLatency = 1' "${DXVK_CONFIG_FILE}"
|
|
|
|
|
sed -i /'d3d9.maxFrameLatency =/c d3d9.maxFrameLatency = 1' "${DXVK_CONFIG_FILE}"
|
|
|
|
|
sed -i /'dxgi.syncInterval =/c dxgi.syncInterval = 1' "${DXVK_CONFIG_FILE}"
|
|
|
|
|
sed -i /'d3d9.presentInterval =/c d3d9.presentInterva = 1' "${DXVK_CONFIG_FILE}"
|
|
|
|
|
sed -i /'dxgi.numBackBuffers =/c dxgi.numBackBuffers = 1' "${DXVK_CONFIG_FILE}"
|
|
|
|
|
sed -i /'d3d9.numBackBuffers =/c d3d9.numBackBuffers = 1' "${DXVK_CONFIG_FILE}"
|
|
|
|
|
sed -i /'d3d9.deviceLossOnFocusLoss =/c d3d9.deviceLossOnFocusLoss = True' "${DXVK_CONFIG_FILE}"
|
|
|
|
|
sed -i /'d3d9.countLosableResources =/c d3d9.countLosableResources = True' "${DXVK_CONFIG_FILE}"
|
|
|
|
|
;;
|
|
|
|
|
esac
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
pw_lsfg_vk_check () {
|
|
|
|
|
if [[ "${PW_USE_LS_FRAME_GEN}" == "1" ]] ; then
|
|
|
|
|
local lsfg_vk_path="$PW_PLUGINS_PATH/fake_dlss/lsfg-vk-$PW_LSFG_VK_VER"
|
|
|
|
@@ -2009,7 +2043,10 @@ stop_portwine () {
|
|
|
|
|
&& ! check_gamescope_session
|
|
|
|
|
then
|
|
|
|
|
if [[ "${DESKTOP_SESSION}" =~ "plasma" ]] ; then
|
|
|
|
|
qdbus org.kde.KWin /Compositor resume
|
|
|
|
|
kde_version=$(plasmashell --version 2>/dev/null | grep -oE '[0-9]+' | head -1)
|
|
|
|
|
if [[ -n "$kde_version" && "$kde_version" -lt 6 ]]; then
|
|
|
|
|
qdbus org.kde.KWin /Compositor resume
|
|
|
|
|
fi
|
|
|
|
|
elif [[ "${DESKTOP_SESSION}" =~ "mate" ]] ; then
|
|
|
|
|
gsettings set org.mate.Marco.general compositing-manager true
|
|
|
|
|
elif [[ "${DESKTOP_SESSION}" =~ "xfce" ]] ; then
|
|
|
|
@@ -2906,8 +2943,8 @@ pw_skip_get_info () {
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
logical_cores=$(grep -c ^"processor" /proc/cpuinfo)
|
|
|
|
|
if [[ "${logical_cores}" -le "4" ]] ; then
|
|
|
|
|
GET_LOGICAL_CORE="1!$(seq -s! 1 $(( logical_cores - 1 )))"
|
|
|
|
|
if (( $logical_cores <= "4" )) ; then
|
|
|
|
|
GET_LOGICAL_CORE="$(seq -s! 1 $(( logical_cores - 1 )))"
|
|
|
|
|
else
|
|
|
|
|
GET_LOGICAL_CORE="1!2!$(seq -s! 4 4 $(( logical_cores - 1 )))"
|
|
|
|
|
fi
|
|
|
|
@@ -3395,40 +3432,6 @@ start_portwine () {
|
|
|
|
|
unset WINE_HIDE_NVIDIA_GPU WINE_HIDE_AMD_GPU WINEHAGS
|
|
|
|
|
unset DXVK_NVAPI_DRIVER_VERSION DXVK_NVAPI_ALLOW_OTHER_DRIVERS
|
|
|
|
|
|
|
|
|
|
set_to_dxvk_conf () {
|
|
|
|
|
case "$1" in
|
|
|
|
|
nvidia_old)
|
|
|
|
|
sed -i /'dxgi.customDeviceId =/c dxgi.customDeviceId = 222F' "${DXVK_CONFIG_FILE}"
|
|
|
|
|
sed -i /'dxgi.customVendorId =/c dxgi.customVendorId = 10de' "${DXVK_CONFIG_FILE}"
|
|
|
|
|
;;
|
|
|
|
|
|
|
|
|
|
nvidia_new)
|
|
|
|
|
sed -i /'dxgi.customDeviceDesc =/c dxgi.customDeviceDesc = "NVIDIA GeForce RTX 4090"' "${DXVK_CONFIG_FILE}"
|
|
|
|
|
sed -i /'dxgi.customDeviceId =/c dxgi.customDeviceId = 2684' "${DXVK_CONFIG_FILE}"
|
|
|
|
|
sed -i /'dxgi.customVendorId =/c dxgi.customVendorId = 10de' "${DXVK_CONFIG_FILE}"
|
|
|
|
|
sed -i /'dxgi.hideAmdGpu =/c dxgi.hideAmdGpu = True' "${DXVK_CONFIG_FILE}"
|
|
|
|
|
sed -i /'dxgi.hideNvidiaGpu =/c dxgi.hideNvidiaGpu = False' "${DXVK_CONFIG_FILE}"
|
|
|
|
|
export WINE_HIDE_NVIDIA_GPU="0"
|
|
|
|
|
export WINE_HIDE_AMD_GPU="1"
|
|
|
|
|
export DXVK_NVAPI_DRIVER_VERSION="99999"
|
|
|
|
|
export DXVK_NVAPI_ALLOW_OTHER_DRIVERS="1"
|
|
|
|
|
export WINEHAGS="1"
|
|
|
|
|
;;
|
|
|
|
|
|
|
|
|
|
low_latency)
|
|
|
|
|
# sed -i /'d3d11.cachedDynamicResources =/c d3d11.cachedDynamicResources = a' "${DXVK_CONFIG_FILE}"
|
|
|
|
|
sed -i /'dxgi.maxFrameLatency =/c dxgi.maxFrameLatency = 1' "${DXVK_CONFIG_FILE}"
|
|
|
|
|
sed -i /'d3d9.maxFrameLatency =/c d3d9.maxFrameLatency = 1' "${DXVK_CONFIG_FILE}"
|
|
|
|
|
sed -i /'dxgi.syncInterval =/c dxgi.syncInterval = 1' "${DXVK_CONFIG_FILE}"
|
|
|
|
|
sed -i /'d3d9.presentInterval =/c d3d9.presentInterva = 1' "${DXVK_CONFIG_FILE}"
|
|
|
|
|
sed -i /'dxgi.numBackBuffers =/c dxgi.numBackBuffers = 1' "${DXVK_CONFIG_FILE}"
|
|
|
|
|
sed -i /'d3d9.numBackBuffers =/c d3d9.numBackBuffers = 1' "${DXVK_CONFIG_FILE}"
|
|
|
|
|
sed -i /'d3d9.deviceLossOnFocusLoss =/c d3d9.deviceLossOnFocusLoss = True' "${DXVK_CONFIG_FILE}"
|
|
|
|
|
sed -i /'d3d9.countLosableResources =/c d3d9.countLosableResources = True' "${DXVK_CONFIG_FILE}"
|
|
|
|
|
;;
|
|
|
|
|
esac
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
# NVAPI, DLSS AND FAKE DLSS
|
|
|
|
|
FAKE_DLSS_3_PATH="$PW_PLUGINS_PATH/fake_dlss/DeckyFramegen_$PW_FAKE_DLSS_3_VER/bin/"
|
|
|
|
|
FAKE_DLSS_3_FILES="amd_fidelityfx_dx12.dll amd_fidelityfx_vk.dll d3dcompiler_47.dll dlss-enabler.dll
|
|
|
|
@@ -5007,6 +5010,7 @@ gui_proton_downloader () {
|
|
|
|
|
try_remove_file "${PW_TMPFS_PATH}/tmp_wine_kron4ek_git"
|
|
|
|
|
try_remove_file "${PW_TMPFS_PATH}/tmp_proton_cachyos_git"
|
|
|
|
|
try_remove_file "${PW_TMPFS_PATH}/tmp_proton_sarek_git"
|
|
|
|
|
try_remove_file "${PW_TMPFS_PATH}/tmp_proton_em_git"
|
|
|
|
|
try_remove_file "${PW_TMPFS_PATH}/tmp_proton_ge_git"
|
|
|
|
|
try_remove_file "${PW_TMPFS_PATH}/tmp_wine_ge_custom_git"
|
|
|
|
|
try_remove_file "${PW_TMPFS_PATH}/tmp_installed_wine"
|
|
|
|
@@ -5080,6 +5084,14 @@ gui_proton_downloader () {
|
|
|
|
|
done
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
# Proton-EM
|
|
|
|
|
read -r -d '' -a PROTON_EM_GIT < <(curl -s "https://api.github.com/repos/Etaash-mathamsetty/Proton/releases" | grep "browser_download_url.*\.tar\.xz" | cut -d \" -f 4)
|
|
|
|
|
if [[ -n "${PROTON_EM_GIT[0]}" ]] ; then
|
|
|
|
|
for PGEGIT in "${PROTON_EM_GIT[@]}" ; do
|
|
|
|
|
echo "${PGEGIT}" | awk -F/ '{print $NF}' | sed 's/.tar.xz//' >> "${PW_TMPFS_PATH}/tmp_proton_em_git"
|
|
|
|
|
done
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
pw_stop_progress_bar
|
|
|
|
|
|
|
|
|
|
if [[ -z "${PROTON_PW_GIT}" ]] ; then
|
|
|
|
@@ -5091,7 +5103,8 @@ gui_proton_downloader () {
|
|
|
|
|
for INSTALLING_VERSION_IN_DIST in * ; do
|
|
|
|
|
sed -i "/${INSTALLING_VERSION_IN_DIST}$/Id" "${PW_TMPFS_PATH}/tmp_proton_pw_git" \
|
|
|
|
|
"${PW_TMPFS_PATH}/tmp_proton_ge_git" "${PW_TMPFS_PATH}/tmp_wine_kron4ek_git" \
|
|
|
|
|
"${PW_TMPFS_PATH}/tmp_wine_ge_custom_git" "${PW_TMPFS_PATH}/tmp_proton_cachyos_git" "${PW_TMPFS_PATH}/tmp_proton_sarek_git"
|
|
|
|
|
"${PW_TMPFS_PATH}/tmp_wine_ge_custom_git" "${PW_TMPFS_PATH}/tmp_proton_cachyos_git" "${PW_TMPFS_PATH}/tmp_proton_sarek_git" \
|
|
|
|
|
"${PW_TMPFS_PATH}/tmp_proton_em_git"
|
|
|
|
|
done
|
|
|
|
|
popd 1>/dev/null || fatal
|
|
|
|
|
|
|
|
|
@@ -5101,6 +5114,7 @@ gui_proton_downloader () {
|
|
|
|
|
TMP_PROTON_CU_GIT="$(sed 's/^/FALSE /' "${PW_TMPFS_PATH}/tmp_wine_ge_custom_git" | tr '\n' ' ')"
|
|
|
|
|
TMP_PROTON_CACHYOS_GIT="$(sed 's/^/FALSE /' "${PW_TMPFS_PATH}/tmp_proton_cachyos_git" | tr '\n' ' ')"
|
|
|
|
|
TMP_PROTON_SAREK_GIT="$(sed 's/^/FALSE /' "${PW_TMPFS_PATH}/tmp_proton_sarek_git" | tr '\n' ' ')"
|
|
|
|
|
TMP_PROTON_EM_GIT="$(sed 's/^/FALSE /' "${PW_TMPFS_PATH}/tmp_proton_em_git" | tr '\n' ' ')"
|
|
|
|
|
|
|
|
|
|
ls -l ${PORT_WINE_PATH}/data/dist | awk '{print $9}' | sed -e "/$PW_PROTON_LG_VER/d" -e "/$PW_WINE_LG_VER/d" -e '/^$/d' 1>"${PW_TMPFS_PATH}/tmp_installed_wine"
|
|
|
|
|
TMP_INSTALLED_WINE="$(sed 's/^/FALSE /' "${PW_TMPFS_PATH}/tmp_installed_wine" | tr '\n' ' ')"
|
|
|
|
@@ -5160,6 +5174,14 @@ gui_proton_downloader () {
|
|
|
|
|
"${pw_yad}" --plug=$KEY_WINE --tabnum=7 --list --checklist --separator="" \
|
|
|
|
|
--gui-type-layout="${NOTEBOOK_GUI_TYPE_LAYOUT}" --gui-type-text="${NOTEBOOK_GUI_TYPE_TEXT}" \
|
|
|
|
|
--column "${translations[Set]}" \
|
|
|
|
|
--column "${translations[Select WINE for download:]}" \
|
|
|
|
|
$TMP_PROTON_EM_GIT \
|
|
|
|
|
1>> "${PW_TMPFS_PATH}/tmp_set_wine" \
|
|
|
|
|
2>/dev/null &
|
|
|
|
|
|
|
|
|
|
"${pw_yad}" --plug=$KEY_WINE --tabnum=8 --list --checklist --separator="" \
|
|
|
|
|
--gui-type-layout="${NOTEBOOK_GUI_TYPE_LAYOUT}" --gui-type-text="${NOTEBOOK_GUI_TYPE_TEXT}" \
|
|
|
|
|
--column "${translations[Set]}" \
|
|
|
|
|
--column "${translations[Select installed WINE for delete:]}" \
|
|
|
|
|
$TMP_INSTALLED_WINE \
|
|
|
|
|
1> "${PW_TMPFS_PATH}/tmp_installed_wine_set" \
|
|
|
|
@@ -5175,6 +5197,7 @@ gui_proton_downloader () {
|
|
|
|
|
--tab="WINE-GE-CUSTOM!$PW_GUI_ICON_PATH/$TAB_SIZE.png!" \
|
|
|
|
|
--tab="PROTON-CACHYOS!$PW_GUI_ICON_PATH/$TAB_SIZE.png!" \
|
|
|
|
|
--tab="PROTON-SAREK!$PW_GUI_ICON_PATH/$TAB_SIZE.png!" \
|
|
|
|
|
--tab="Proton-EM!$PW_GUI_ICON_PATH/$TAB_SIZE.png!" \
|
|
|
|
|
--tab="${translations[INSTALLED]}!$PW_GUI_ICON_PATH/$TAB_SIZE.png!" \
|
|
|
|
|
--button="${translations[CANCEL]}!$PW_GUI_ICON_PATH/$BUTTON_SIZE.png!":1 \
|
|
|
|
|
--button="${translations[OK]}!$PW_GUI_ICON_PATH/$BUTTON_SIZE.png!":0 2>/dev/null
|
|
|
|
@@ -5245,7 +5268,7 @@ gui_proton_downloader () {
|
|
|
|
|
|
|
|
|
|
if [[ "$1" != "silent" ]] ; then
|
|
|
|
|
for GIVE_ALL_WINE in ${VERSION_WINE_GIT} ; do
|
|
|
|
|
for GIVE_WINE_URL in "${WINE_GE_CUSTOM[@]}" "${PROTON_GE_GIT[@]}" "${WINE_KRON4EK[@]}" "${PROTON_PW_GIT[@]}" "${PROTON_CACHYOS_GIT[@]}" "${PROTON_SAREK_GIT[@]}" ; do
|
|
|
|
|
for GIVE_WINE_URL in "${WINE_GE_CUSTOM[@]}" "${PROTON_GE_GIT[@]}" "${WINE_KRON4EK[@]}" "${PROTON_PW_GIT[@]}" "${PROTON_CACHYOS_GIT[@]}" "${PROTON_SAREK_GIT[@]}" "${PROTON_EM_GIT[@]}" ; do
|
|
|
|
|
if [[ ${GIVE_WINE_URL^^} =~ ${GIVE_ALL_WINE^^}.TAR ]] ; then
|
|
|
|
|
export URL_VERSION_PROTON_GIT=$GIVE_WINE_URL
|
|
|
|
|
fi
|
|
|
|
@@ -5256,7 +5279,7 @@ gui_proton_downloader () {
|
|
|
|
|
restart_pp
|
|
|
|
|
else
|
|
|
|
|
print_error "$PW_WINE_USE"
|
|
|
|
|
for GIVE_WINE_URL in "${WINE_GE_CUSTOM[@]}" "${PROTON_GE_GIT[@]}" "${WINE_KRON4EK[@]}" "${PROTON_PW_GIT[@]}" "${PROTON_CACHYOS_GIT[@]}" "${PROTON_SAREK_GIT[@]}" ; do
|
|
|
|
|
for GIVE_WINE_URL in "${WINE_GE_CUSTOM[@]}" "${PROTON_GE_GIT[@]}" "${WINE_KRON4EK[@]}" "${PROTON_PW_GIT[@]}" "${PROTON_CACHYOS_GIT[@]}" "${PROTON_SAREK_GIT[@]}" "${PROTON_EM_GIT[@]}" ; do
|
|
|
|
|
if [[ ${GIVE_WINE_URL^^} =~ ${PW_WINE_USE^^} ]] ; then
|
|
|
|
|
export URL_VERSION_PROTON_GIT=$GIVE_WINE_URL
|
|
|
|
|
fi
|
|
|
|
@@ -5903,13 +5926,12 @@ gui_mangohud () {
|
|
|
|
|
|
|
|
|
|
export MANGOHUD_CONFIG="${GUI_MH_RESULT}"
|
|
|
|
|
export PW_MANGOHUD FPS_LIMIT
|
|
|
|
|
edit_db_from_gui MANGOHUD_CONFIG PW_MANGOHUD FPS_LIMIT
|
|
|
|
|
edit_db_from_gui PW_MANGOHUD_CONFIG PW_MANGOHUD FPS_LIMIT
|
|
|
|
|
|
|
|
|
|
if [[ "${YAD_MANGOHUD_STATUS}" == "184" ]] ; then
|
|
|
|
|
PW_MANGOHUD="1"
|
|
|
|
|
pw_init_runtime
|
|
|
|
|
pw_mangohud_check
|
|
|
|
|
pw_vkbasalt_check
|
|
|
|
|
pw_lsfg_vk_check
|
|
|
|
|
${pw_runtime} \
|
|
|
|
|
$PW_ADD_VAR_SLR \
|
|
|
|
|