From 9cee5b32e99ebf37bf44bbd4601dd62da5b9bcf9 Mon Sep 17 00:00:00 2001 From: Htylol Date: Sat, 26 Jul 2025 21:40:59 +0500 Subject: [PATCH] Updated the mechanics of detecting GPU drivers in the system --- data_from_portwine/locales/PortProton.pot | 21 +- .../locales/es/LC_MESSAGES/PortProton.po | 48 +++-- .../locales/ru/LC_MESSAGES/PortProton.po | 63 +++--- data_from_portwine/scripts/functions_helper | 189 ++++++++++++++---- data_from_portwine/scripts/start.sh | 35 +--- data_from_portwine/scripts/var | 1 - 6 files changed, 239 insertions(+), 118 deletions(-) diff --git a/data_from_portwine/locales/PortProton.pot b/data_from_portwine/locales/PortProton.pot index 5c87a3be..13050ecd 100644 --- a/data_from_portwine/locales/PortProton.pot +++ b/data_from_portwine/locales/PortProton.pot @@ -7,7 +7,7 @@ msgid "" msgstr "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" - "POT-Creation-Date: 2025-07-24 16:50+0300\n" + "POT-Creation-Date: 2025-07-26 21:39+0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -581,6 +581,10 @@ msgid "A very dangerous way to hack the memory write timer in ntdll. This " "recommended not to change the value.)" msgstr "" +msgid "GLIBC version 2.38+ is required for use Lossless Scaling frame " + "generation" +msgstr "" + msgid "Change the version of WINDOWS emulation" msgstr "" @@ -1077,9 +1081,9 @@ msgstr "" msgid "Show current wine sync in use" msgstr "" -msgid "MangoHud settings (Keys R_SHIFT + F12 disable " - "MangoHud)\\nnote: To display help for each item, just hover " - "the mouse cursor over the text." +msgid "MangoHud settings (Keys R_SHIFT + F12 disable MangoHud)" + "\\nnote: To display help for each item, just hover the mouse " + "cursor over the text." msgstr "" msgid "Enabling fps limitation with MANGOHUD tools built into PortProton " @@ -1427,6 +1431,9 @@ msgstr "" msgid "Disable GameScope and go to the previous menu" msgstr "" +msgid "The graphics card does not support Vulkan" +msgstr "" + msgid "Recommended value" msgstr "" @@ -1623,12 +1630,6 @@ msgstr "" msgid "FONTS" msgstr "" -msgid "Attention working version of vulkan not detected!" -msgstr "" - -msgid "It is recommended to run games in OpenGL (low performance possible)!" -msgstr "" - msgid "PortProton was launched in creation mode PortProton.log and it is " "successfully stored in the root directory of the port" msgstr "" diff --git a/data_from_portwine/locales/es/LC_MESSAGES/PortProton.po b/data_from_portwine/locales/es/LC_MESSAGES/PortProton.po index aa755ff5..7e36ca1b 100644 --- a/data_from_portwine/locales/es/LC_MESSAGES/PortProton.po +++ b/data_from_portwine/locales/es/LC_MESSAGES/PortProton.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-07-24 16:50+0300\n" +"POT-Creation-Date: 2025-07-26 19:21+0500\n" "PO-Revision-Date: 2025-07-24 15:26+0500\n" "Last-Translator: \n" "Language-Team: \n" @@ -495,8 +495,8 @@ msgid "" "Super + Y : Toggle NIS upscaling\n" "Super + I : Increase FSR sharpness by 1\n" "Super + O : Decrease FSR sharpness by 1\n" -"Super + S : Take screenshot (currently goes to /tmp/gamescope_DATE." -"png)\n" +"Super + S : Take screenshot (currently goes to /tmp/" +"gamescope_DATE.png)\n" "Super + G : Toggle keyboard grab\n" "Super + C : Update clipboard" msgstr "" @@ -707,6 +707,10 @@ msgstr "" "Esto mejora el rendimiento de algunos juegos muy específicos. (Se recomienda " "no cambiar el valor)" +msgid "" +"GLIBC version 2.38+ is required for use Lossless Scaling frame generation" +msgstr "" + msgid "Change the version of WINDOWS emulation" msgstr "Cambiar la versión de emulación de WINDOWS" @@ -1861,6 +1865,10 @@ msgstr "" msgid "Disable GameScope and go to the previous menu" msgstr "Desactivar GameScope e ir al menú anterior" +#, fuzzy +msgid "The graphics card does not support Vulkan" +msgstr "Elige una tarjeta gráfica para ejecutar el juego" + msgid "Recommended value" msgstr "Valor recomendado" @@ -2082,13 +2090,6 @@ msgstr "DLLS" msgid "FONTS" msgstr "FUENTES" -msgid "Attention working version of vulkan not detected!" -msgstr "¡Atención, no se detectó la versión funcional de vulkan!" - -msgid "It is recommended to run games in OpenGL (low performance possible)!" -msgstr "" -"¡Se recomienda ejecutar juegos en OpenGL (es posible un rendimiento bajo)!" - msgid "" "PortProton was launched in creation mode PortProton.log and it is " "successfully stored in the root directory of the port" @@ -2218,6 +2219,13 @@ msgstr "UNIRSE" msgid "THIRD PARTY LIBRARIES" msgstr "BIBLIOTECAS DE TERCEROS" +#~ msgid "Attention working version of vulkan not detected!" +#~ msgstr "¡Atención, no se detectó la versión funcional de vulkan!" + +#~ msgid "It is recommended to run games in OpenGL (low performance possible)!" +#~ msgstr "" +#~ "¡Se recomienda ejecutar juegos en OpenGL (es posible un rendimiento bajo)!" + #~ msgid "Legacy DXVK (Vulkan v1.1)" #~ msgstr "DXVK heredado (Vulkan v1.1)" @@ -2269,8 +2277,8 @@ msgstr "BIBLIOTECAS DE TERCEROS" #~ msgid "" #~ "For adding shortcut to STEAM, needed restart.\\n\\nRestart STEAM now?" #~ msgstr "" -#~ "Para agregar el acceso directo a STEAM, es necesario reiniciar.\\n" -#~ "\\¿Quieres reiniciar STEAM ahora?" +#~ "Para agregar el acceso directo a STEAM, es necesario reiniciar.\\n\\" +#~ "¿Quieres reiniciar STEAM ahora?" #~ msgid "Restarting STEAM... Please wait." #~ msgstr "Restarting STEAM... Please wait." @@ -2280,14 +2288,14 @@ msgstr "BIBLIOTECAS DE TERCEROS" #~ msgid "" #~ "Gamescope is not detected on the system, to install it, run the " -#~ "command in the terminal:\\nflatpak install -y runtime/org.freedesktop." -#~ "Platform.VulkanLayer.gamescope/x86_64/$%{GAMESCOPE_VERSION}%\\n(Can be " -#~ "selected and copied)" +#~ "command in the terminal:\\nflatpak install -y runtime/" +#~ "org.freedesktop.Platform.VulkanLayer.gamescope/x86_64/$%" +#~ "{GAMESCOPE_VERSION}%\\n(Can be selected and copied)" #~ msgstr "" #~ "Gamescope no se detecta en el sistema, para instalarlo, ejecute el " -#~ "comando en el terminal:\\n flatpak install -y runtime/org.freedesktop." -#~ "Platform.VulkanLayer.gamescope/x86_64/$%{GAMESCOPE_VERSION}%\\n (Se puede " -#~ "seleccionar y copiar)" +#~ "comando en el terminal:\\n flatpak install -y runtime/" +#~ "org.freedesktop.Platform.VulkanLayer.gamescope/x86_64/$%" +#~ "{GAMESCOPE_VERSION}%\\n (Se puede seleccionar y copiar)" #, sh-format #~ msgid "" @@ -2471,8 +2479,8 @@ msgstr "BIBLIOTECAS DE TERCEROS" #~ "-F fsr: use AMD FidelityFX™ Super Resolution 1.0 for upscaling.\n" #~ "-F nis: use NVIDIA Image Scaling v1.0.3 for upscaling.\n" #~ "-S integer: use integer scaling.\n" -#~ "-S stretch: use stretch scaling, the game will fill the window. (e." -#~ "g. 4:3 to 16:9).\n" +#~ "-S stretch: use stretch scaling, the game will fill the window. " +#~ "(e.g. 4:3 to 16:9).\n" #~ "-b: create a border-less window.\n" #~ "-f: create a full-screen window." #~ msgstr "" diff --git a/data_from_portwine/locales/ru/LC_MESSAGES/PortProton.po b/data_from_portwine/locales/ru/LC_MESSAGES/PortProton.po index 14e4bd7f..0d8dbf20 100644 --- a/data_from_portwine/locales/ru/LC_MESSAGES/PortProton.po +++ b/data_from_portwine/locales/ru/LC_MESSAGES/PortProton.po @@ -7,16 +7,16 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-07-24 16:50+0300\n" -"PO-Revision-Date: 2025-07-24 16:51+0300\n" +"POT-Creation-Date: 2025-07-26 19:21+0500\n" +"PO-Revision-Date: 2025-07-26 21:42+0500\n" "Last-Translator: \n" "Language-Team: \n" "Language: ru_RU\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" -"%10<=4 && (n%100<12 || n%100>14) ? 1 : 2);\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"n%10<=4 && (n%100<12 || n%100>14) ? 1 : 2);\n" "X-Generator: Poedit 3.6\n" msgid "" @@ -368,8 +368,8 @@ msgid "" "More than one DB file found for the application being launched.\\nSelect the " "required one, or delete the extra DB file before the next run.\\n" msgstr "" -"Для запускаемого приложения найдено более одного конфигурационного файла ." -"ppdb.\\nВыберите нужный или удалите лишний файл .ppdb перед следующим " +"Для запускаемого приложения найдено более одного конфигурационного " +"файла .ppdb.\\nВыберите нужный или удалите лишний файл .ppdb перед следующим " "запуском\\n" msgid "Update scripts:" @@ -506,8 +506,8 @@ msgid "" "Super + Y : Toggle NIS upscaling\n" "Super + I : Increase FSR sharpness by 1\n" "Super + O : Decrease FSR sharpness by 1\n" -"Super + S : Take screenshot (currently goes to /tmp/gamescope_DATE." -"png)\n" +"Super + S : Take screenshot (currently goes to /tmp/" +"gamescope_DATE.png)\n" "Super + G : Toggle keyboard grab\n" "Super + C : Update clipboard" msgstr "" @@ -732,6 +732,10 @@ msgstr "" "производительность некоторых очень специфических игр (рекомендуется не " "изменять значение)" +msgid "" +"GLIBC version 2.38+ is required for use Lossless Scaling frame generation" +msgstr "" + msgid "Change the version of WINDOWS emulation" msgstr "Изменить версию эмуляции WINDOWS" @@ -1349,9 +1353,9 @@ msgid "" "MangoHud settings (Keys R_SHIFT + F12 disable MangoHud)\\nnote: To display help for each item, just hover the mouse cursor over the text." msgstr "" -"Настройки MangoHud (клавиши R_SHIFT + F12 отключают " -"MangoHud)\\nПримечание: Чтобы отобразить справку для каждого " -"элемента, наведите курсор мыши на текст." +"Настройки MangoHud (клавиши R_SHIFT + F12 отключают MangoHud)" +"\\nПримечание: Чтобы отобразить справку для каждого элемента, " +"наведите курсор мыши на текст." msgid "" "Enabling fps limitation with MANGOHUD tools built into PortProton (Keys " @@ -1849,6 +1853,9 @@ msgstr "" msgid "Disable GameScope and go to the previous menu" msgstr "Отключить Gamescope и перейти в предыдущее меню" +msgid "The graphics card does not support Vulkan" +msgstr "Видеокарта не поддерживает Vulkan" + msgid "Recommended value" msgstr "Рекомендуемое значение" @@ -2068,13 +2075,6 @@ msgstr "БИБЛИОТЕКИ" msgid "FONTS" msgstr "ШРИФТЫ" -msgid "Attention working version of vulkan not detected!" -msgstr "Внимание, рабочая версия Vulkan не обнаружена!" - -msgid "It is recommended to run games in OpenGL (low performance possible)!" -msgstr "" -"Игры рекомендуется запускать в OpenGL (возможна низкая производительность)" - msgid "" "PortProton was launched in creation mode PortProton.log and it is " "successfully stored in the root directory of the port" @@ -2202,6 +2202,13 @@ msgstr "ПРИСОЕДЕНИТЬСЯ" msgid "THIRD PARTY LIBRARIES" msgstr "БИБЛИОТЕКИ" +#~ msgid "Attention working version of vulkan not detected!" +#~ msgstr "Внимание, рабочая версия Vulkan не обнаружена!" + +#~ msgid "It is recommended to run games in OpenGL (low performance possible)!" +#~ msgstr "" +#~ "Игры рекомендуется запускать в OpenGL (возможна низкая производительность)" + #~ msgid "Legacy DXVK (Vulkan v1.1)" #~ msgstr "Устаревший DXVK (Vulkan v1.1)" @@ -2267,14 +2274,14 @@ msgstr "БИБЛИОТЕКИ" #~ msgid "" #~ "Gamescope is not detected on the system, to install it, run the " -#~ "command in the terminal:\\nflatpak install -y runtime/org.freedesktop." -#~ "Platform.VulkanLayer.gamescope/x86_64/$%{GAMESCOPE_VERSION}%\\n(Can be " -#~ "selected and copied)" +#~ "command in the terminal:\\nflatpak install -y runtime/" +#~ "org.freedesktop.Platform.VulkanLayer.gamescope/x86_64/$%" +#~ "{GAMESCOPE_VERSION}%\\n(Can be selected and copied)" #~ msgstr "" #~ "Gamescope не найден в системе, для его установки выполните команду в " -#~ "терминале:\\nflatpak install -y runtime/org.freedesktop.Platform." -#~ "VulkanLayer.gamescope/x86_64/$%{GAMESCOPE_VERSION}%\\n(Данный текст можно " -#~ "выделить и скопировать)" +#~ "терминале:\\nflatpak install -y runtime/" +#~ "org.freedesktop.Platform.VulkanLayer.gamescope/x86_64/$%" +#~ "{GAMESCOPE_VERSION}%\\n(Данный текст можно выделить и скопировать)" #, sh-format #~ msgid "" @@ -2561,8 +2568,8 @@ msgstr "БИБЛИОТЕКИ" #~ "-F fsr: use AMD FidelityFX™ Super Resolution 1.0 for upscaling.\n" #~ "-F nis: use NVIDIA Image Scaling v1.0.3 for upscaling.\n" #~ "-S integer: use integer scaling.\n" -#~ "-S stretch: use stretch scaling, the game will fill the window. (e." -#~ "g. 4:3 to 16:9).\n" +#~ "-S stretch: use stretch scaling, the game will fill the window. " +#~ "(e.g. 4:3 to 16:9).\n" #~ "-b: create a border-less window.\n" #~ "-f: create a full-screen window." #~ msgstr "" @@ -2571,8 +2578,8 @@ msgstr "БИБЛИОТЕКИ" #~ "размера окна Gamescope обновит эти настройки. Если указано -H, а -W нет, " #~ "предполагается соотношение сторон 16:9. По умолчанию установлено значение " #~ "1280×720.\n" -#~ "-w, -h: установить разрешение, используемое в игре. Если указано -" -#~ "h, а -w нет, предполагается соотношение сторон 16:9. По умолчанию " +#~ "-w, -h: установить разрешение, используемое в игре. Если указано " +#~ "-h, а -w нет, предполагается соотношение сторон 16:9. По умолчанию " #~ "используются значения, указанные в -W и -H.\n" #~ "-r: установить ограничение частоты кадров для игры. По умолчанию " #~ "значение неограниченно.\n" diff --git a/data_from_portwine/scripts/functions_helper b/data_from_portwine/scripts/functions_helper index 740be877..80dca5a8 100755 --- a/data_from_portwine/scripts/functions_helper +++ b/data_from_portwine/scripts/functions_helper @@ -871,7 +871,7 @@ check_vendor_gpu () { fi if command -v glxinfo &>/dev/null ; then - pw_check_glxinfo + background_pid --end "pw_check_glxinfo" "3" case "$(<"${PW_TMPFS_PATH}/glxinfo.tmp" tr '[:upper:]' '[:lower:]')" in *nvidia*) [[ -d /sys/bus/pci/drivers/nvidia ]] && VENDOR_GPU_USE+=("nvidia") @@ -1345,7 +1345,6 @@ seconds_to_time () { combobox_fix () { if [[ -z "$1" ]] ; then - print_error "no argument specified for combobox_fix" return 1 else local name1 name2 @@ -2514,7 +2513,7 @@ pw_init_db () { # add libs from https://github.com/CosmicFusion/fedora-amdgpu-pro/tree/main/x86_64/libdrm-pro to ld_library_path (this repo is deprecated and archived but why not) echo "$PW_VK_ICD_FILENAMES" | grep -qi "/opt/amdgpu-pro/etc/vulkan/icd.d/amd_icd.*.json" && \ var_ld_library_path_update "/opt/amdgpu/libdrm/lib64:/opt/amdgpu/libdrm/lib32" - + export PW_VK_ICD_FILENAMES ;; @@ -2529,7 +2528,7 @@ pw_init_db () { [[ "${START_FROM_STEAM}" == 1 ]] && export PW_GUI_DISABLED_CS=1 [[ "${START_FROM_PP_GUI}" == 1 ]] && export PW_GUI_DISABLED_CS=0 && unset START_FROM_PP_GUI - + return 0 } @@ -2802,20 +2801,148 @@ pw_check_command () { export -f pw_check_command pw_check_vulkan () { - if [[ ! -f "${PW_TMPFS_PATH}/vulkaninfo.tmp" ]] ; then - TIMEOUT_CMD="5" - if ! pw_check_command vulkaninfo ; then - print_warning "use portable vulkaninfo" - "$PW_PLUGINS_PATH"/portable/bin/x86_64-linux-gnu-vulkaninfo &> "${PW_TMPFS_PATH}/vulkaninfo.tmp" + TIMEOUT_CMD="5" + export DISABLE_LAYER_AMD_SWITCHABLE_GRAPHICS_1="1" + if ! pw_check_command vulkaninfo ; then + print_warning "use portable vulkaninfo" + "$PW_PLUGINS_PATH"/portable/bin/x86_64-linux-gnu-vulkaninfo &> "${PW_TMPFS_PATH}/vulkaninfo.tmp" + fi +} + +compare_versions () { + IFS='.' read -ra a1 <<< "$1" + IFS='.' read -ra a2 <<< "$2" + local len=$(( ${#a1[@]} > ${#a2[@]} ? ${#a1[@]} : ${#a2[@]} )) + + for ((i=0; i n2 )) ; then + return 0 + elif (( n1 < n2 )) ; then + return 1 + fi + done + return 0 +} + +pw_check_dxvk () { + background_pid --end "pw_check_vulkan" "1" + if [[ -z $PW_VULKAN_DRIVER_USE ]] && [[ -f "${PW_TMPFS_PATH}/vulkaninfo.tmp" ]] ; then + if [[ -z $PW_GPU_USE ]] ; then + if [[ -z $GET_GPU_NAMES ]] ; then + GET_GPU_NAMES=$(awk -F '=' '/deviceName/{print $2}' "${PW_TMPFS_PATH}/vulkaninfo.tmp" | sed '/llvm/d' | sort -u | sed 's/^ //' | paste -sd '!') + export GET_GPU_NAMES + fi + IFS='!' read -r -a SELECTED_VULKAN_GPU <<< "$GET_GPU_NAMES" + else + IFS='' read -r -a SELECTED_VULKAN_GPU <<< "$PW_GPU_USE" + fi + + for i in "${SELECTED_VULKAN_GPU[@]}" ; do + PW_CHECK_VULKAN_DRIVER="$(awk -v target="$i" ' + BEGIN { + in_target = 0 + } + /^GPU[0-9]+:/ { + if (in_target) { + in_target = 0 + } + next + } + /apiVersion/ { var1=$0 } + /driverVersion/ { var2=$0 } + /deviceName/ { var3=$0 } + /deviceName/ && !/llvmpipe/ { + split($0, parts, "=") + device_name = parts[2] + gsub(/^[[:space:]]+|[[:space:]]+$/, "", device_name) + if (device_name == target) in_target = 1 + next + } + in_target { + if ($0 ~ /driverInfo/) { var4=$0; exit } + } + END { + print var1 "!" var2 "!" var3 "!" var4 "!" + } + ' "${PW_TMPFS_PATH}/vulkaninfo.tmp")" + + IFS='!' read -r -a PW_CHECK_VULKAN_DRIVER_ARRAY <<< "$PW_CHECK_VULKAN_DRIVER" + if [[ ${PW_CHECK_VULKAN_DRIVER_ARRAY[2],,} =~ nvidia ]] ; then + read -r -a PW_CHECK_VULKAN_DRIVER_ARRAY_3 <<< "${PW_CHECK_VULKAN_DRIVER_ARRAY[3]}" + if compare_versions "${PW_CHECK_VULKAN_DRIVER_ARRAY_3[2]}" "550.54.14" ; then + PW_VULKAN_DRIVER_USE="6" && break + fi + elif [[ ${PW_CHECK_VULKAN_DRIVER_ARRAY[3],,} =~ mesa ]] ; then + read -r -a PW_CHECK_VULKAN_DRIVER_ARRAY_1 <<< "${PW_CHECK_VULKAN_DRIVER_ARRAY[1]}" + if compare_versions "${PW_CHECK_VULKAN_DRIVER_ARRAY_1[2]}" "25.0" ; then + PW_VULKAN_DRIVER_USE="6" && break + fi + elif [[ ${PW_CHECK_VULKAN_DRIVER_ARRAY[3],,} =~ llpc ]] ; then + read -r -a PW_CHECK_VULKAN_DRIVER_ARRAY_1 <<< "${PW_CHECK_VULKAN_DRIVER_ARRAY[1]}" + if compare_versions "${PW_CHECK_VULKAN_DRIVER_ARRAY_1[2]}" "2.0.310" ; then + PW_VULKAN_DRIVER_USE="6" + fi + fi + done + + if [[ ${PW_CHECK_VULKAN_DRIVER_ARRAY[3],,} =~ llpc ]] && [[ -z $PW_AMD_VULKAN_USE || $PW_AMD_VULKAN_USE == "disabled" ]] ; then + PW_VK_ICD_FILENAMES="" + for dir in /opt/amdgpu/etc/vulkan/icd.d /etc/vulkan/icd.d /usr/share/vulkan/icd.d; do + for file in "$dir"/amd_icd*.json; do + [ -f "$file" ] && PW_VK_ICD_FILENAMES="${PW_VK_ICD_FILENAMES:+${PW_VK_ICD_FILENAMES}:}$file" + done + done + export PW_VK_ICD_FILENAMES + fi + + if [[ -z ${PW_CHECK_VULKAN_DRIVER_ARRAY[3]} ]] && [[ -n $PW_GPU_USE && $PW_GPU_USE != "disabled" ]] ; then + unset PW_GPU_USE + pw_check_dxvk + fi + + if [[ -z $PW_GPU_USE ]] ; then + export PW_GPU_USE=${PW_CHECK_VULKAN_DRIVER_ARRAY[2]//*= /} + edit_user_conf_from_gui PW_GPU_USE + fi + fi + + if [[ $PW_VULKAN_DRIVER_USE == "6" ]] ; then + [[ -z $PW_VULKAN_USE ]] && PW_VULKAN_USE="6" + case "$PW_VULKAN_USE" in + 0) PW_DEFAULT_VULKAN_USE="$SORT_OPENGL!$SORT_NEWEST!$SORT_STABLE!$SORT_SAREK" ;; + 1) PW_DEFAULT_VULKAN_USE="$SORT_SAREK!$SORT_NEWEST!$SORT_STABLE!$SORT_OPENGL" ;; + 2) PW_DEFAULT_VULKAN_USE="$SORT_STABLE!$SORT_NEWEST!$SORT_SAREK!$SORT_OPENGL" ;; + *) PW_DEFAULT_VULKAN_USE="$SORT_NEWEST!$SORT_STABLE!$SORT_SAREK!$SORT_OPENGL" ;; + esac + else + if [[ -z $PW_GPU_USE || $PW_GPU_USE == "disabled" ]] ; then + [[ -z $PW_VULKAN_USE ]] && PW_VULKAN_USE="0" + PW_DEFAULT_VULKAN_USE="$SORT_OPENGL" + else + read -r -a PW_CHECK_VULKAN_DRIVER_ARRAY_0 <<< "${PW_CHECK_VULKAN_DRIVER_ARRAY[0]}" + if compare_versions "${PW_CHECK_VULKAN_DRIVER_ARRAY_0[2]}" "1.3" ; then + [[ -z $PW_VULKAN_USE ]] && PW_VULKAN_USE="2" + case "$PW_VULKAN_USE" in + 0) PW_DEFAULT_VULKAN_USE="$SORT_OPENGL!$SORT_STABLE!$SORT_SAREK" ;; + 1) PW_DEFAULT_VULKAN_USE="$SORT_SAREK!$SORT_STABLE!$SORT_OPENGL" ;; + *) PW_DEFAULT_VULKAN_USE="$SORT_STABLE!$SORT_SAREK!$SORT_OPENGL" ;; + esac + else + [[ -z $PW_VULKAN_USE ]] && PW_VULKAN_USE="1" + case "$PW_VULKAN_USE" in + 0) PW_DEFAULT_VULKAN_USE="$SORT_OPENGL!$SORT_SAREK" ;; + *) PW_DEFAULT_VULKAN_USE="$SORT_SAREK!$SORT_OPENGL" ;; + esac + fi fi fi } pw_check_glxinfo () { - if [[ ! -f "${PW_TMPFS_PATH}/glxinfo.tmp" ]] ; then - TIMEOUT_CMD="5" - pw_check_command glxinfo -B - fi + TIMEOUT_CMD="5" + pw_check_command glxinfo -B } pw_get_tmp_files () { @@ -2823,8 +2950,6 @@ pw_get_tmp_files () { do pw_check_command "$f_cmd" done - pw_check_vulkan - # GALLIUM NINE unset FIND_D3D_MODULE D3D_MODULE_PATH if ! check_flatpak ; then @@ -2850,16 +2975,15 @@ pw_get_tmp_files () { pw_skip_get_info () { if [[ "${SKIP_CHECK_UPDATES_NEW}" != "1" ]] ; then - background_pid --end "pw_get_tmp_files" "1" + background_pid --end "pw_get_tmp_files" "2" if [[ -f "${PW_TMPFS_PATH}/gamescope.tmp" ]] ; then export GAMESCOPE_INSTALLED="1" fi if [[ -f "${PW_TMPFS_PATH}/vulkaninfo.tmp" ]] ; then - VULKAN_DRIVER_NAME="$(grep -e 'driverName' "${PW_TMPFS_PATH}/vulkaninfo.tmp" | awk '{print$3}' | head -1)" - GET_GPU_NAMES=$(awk -F '=' '/deviceName/{print $2}' "${PW_TMPFS_PATH}/vulkaninfo.tmp" | sed '/llvm/d'| sort -u | sed 's/^ //' | paste -sd '!') - export VULKAN_DRIVER_NAME GET_GPU_NAMES + GET_GPU_NAMES=$(awk -F '=' '/deviceName/{print $2}' "${PW_TMPFS_PATH}/vulkaninfo.tmp" | sed '/llvm/d' | sort -u | sed 's/^ //' | paste -sd '!') + export GET_GPU_NAMES fi if [[ -f "${PW_TMPFS_PATH}/lspci.tmp" ]] ; then @@ -4589,7 +4713,7 @@ pw_run () { PW_LD_LIBRARY_PATH="${PW_LD_LIBRARY_PATH}:${WINE_LIBRARY_PATH}" echo "##### Current variables #####" > "$PW_TMPFS_PATH/var.log" - for var in "WINEDIR" "WINEPREFIX" "WINEDLLOVERRIDES" "PATH_TO_GAME" "PW_WINE_USE" "PW_VULKAN_USE" "VULKAN_DRIVER_NAME" \ + for var in "WINEDIR" "WINEPREFIX" "WINEDLLOVERRIDES" "PATH_TO_GAME" "PW_WINE_USE" "PW_VULKAN_USE" \ "WINELOADER" "VKD3D_CONFIG" "PW_LD_LIBRARY_PATH" "PATH" "WINEESYNC" "WINEFSYNC" "WINEFSYNC_FUTEX2" \ "WINEDLLPATH" "WINE_CPU_TOPOLOGY" "PW_RUN_GAMESCOPE" "LD_LIBRARY_PATH" "PW_VK_ICD_FILENAMES" "PW_TASKSET_SLR" do @@ -5543,7 +5667,6 @@ gui_edit_db () { if [[ -n "${PW_AMD_VULKAN_USE}" ]] && \ [[ "${PW_AMD_VULKAN_USE}" != "disabled" ]] ; then AMD_VULKAN_VAR="${PW_AMD_VULKAN_USE}" - export DISABLE_LAYER_AMD_SWITCHABLE_GRAPHICS_1=1 else AMD_VULKAN_VAR="disabled" fi @@ -6423,12 +6546,12 @@ gui_userconf () { NEW_STEAM_BEHAVIOR="${translations[Enable]}" fi - if [[ -n $PW_GPU_USE ]] \ - && [[ $PW_GPU_USE != "disabled" ]] - then + if [[ -n $PW_GPU_USE ]] && [[ $PW_GPU_USE != "disabled" ]] ; then GPU_VAR="$PW_GPU_USE" + elif [[ -n $GET_GPU_NAMES ]] ; then + GPU_VAR="${GET_GPU_NAMES/!*/}" else - GPU_VAR="disabled" + GPU_VAR="${translations[The graphics card does not support Vulkan]}" fi if [[ $PW_WINE_DPI_VALUE == "recommended" ]] ; then @@ -6492,7 +6615,7 @@ gui_userconf () { --field="${translations[Change branch to]}!${translations[Depending on the version of the scripts, PortProton will receive the latest changes first (the DEVEL branch), the STABLE branch is updated later and is stable.]} :CB" "$(combobox_fix "$BRANCH" "$NEW_BRANCH")" \ --field="${translations[Change start gui to]}!${translations[When using PANED in the game start menu, additional buttons are located on one large page; if NOTEBOOK, then they are divided into several.]} :CB" "$(combobox_fix "$PW_GUI_START" "$NEW_START_GUI")" \ --field="${translations[Steam covers download]}!${translations[If downloading steam covers is enabled, they will be downloaded and created. (Disablement is provided in cases where their downloading is unavailable for some reason)]} :CB" "$(combobox_fix "$DOWNLOAD_STEAM_GRID" "$NEW_STEAM_BEHAVIOR")" \ - --field="${translations[Choose a graphics card to run the game]}!${translations[Select which video card will be used to run the game (used for all running games and programs in PortProton)]} :CB" "$(combobox_fix --disabled "$GPU_VAR" "$GET_GPU_NAMES")" \ + --field="${translations[Choose a graphics card to run the game]}!${translations[Select which video card will be used to run the game (used for all running games and programs in PortProton)]} :CB" "$(combobox_fix "$GPU_VAR" "$GET_GPU_NAMES")" \ --field="${translations[Force dpi]}!${translations[Here you can set forced dpi for applications wine]} :CB" "$(combobox_fix --disabled "$YAD_DPI_VAR" "${translations[Recommended value]}!80!96!120!144!168!192!216!240")" \ --field="${translations[Choice wine audio driver]}!${translations[Fixes sound popling if choice alsa]} :CB" "$(combobox_fix --disabled "$SOUND_DRIVER_VAR" "alsa!oss!pulse")" \ --field="${translations[Select PortProton theme]}!${translations[Allows you to select a theme for PortProton]} :CB" "$(combobox_fix "$GUI_THEME" "${translations[default]}!${translations[compact]}!${translations[classic]}")" \ @@ -6523,6 +6646,7 @@ gui_userconf () { gui_open_user_conf ;; 166) + unset PW_VULKAN_DRIVER_USE IFS='%' read -r -a PW_ADD_SETTINGS_UC <"${PW_TMPFS_PATH}/tmp_yad_userconf_set_cb" MIRROR="${PW_ADD_SETTINGS_UC[0]}" if [[ $BRANCH != "${PW_ADD_SETTINGS_UC[1]}" ]] ; then @@ -6582,6 +6706,7 @@ gui_userconf () { if [[ $SORT_WITH_TIME == "${translations[According to last launch]}" ]] ; then SORT_WITH_TIME="lastlaunch" elif [[ $SORT_WITH_TIME == "${translations[By time]}" ]] ; then SORT_WITH_TIME="bytime" fi + [[ $PW_GPU_USE == "${translations[The graphics card does not support Vulkan]}" ]] && PW_GPU_USE="disabled" edit_user_conf_from_gui MIRROR BRANCH PW_GUI_START DOWNLOAD_STEAM_GRID PW_GPU_USE PW_WINE_DPI_VALUE PW_SOUND_DRIVER_USE \ GUI_THEME GTK_THEME DESKTOP_WITH_TIME SORT_WITH_TIME @@ -7026,9 +7151,9 @@ pw_prefix_manager () { --tab="${translations[SETTINGS]}!$PW_GUI_ICON_PATH/$TAB_SIZE.png!" 2>/dev/null YAD_STATUS="$?" - try_remove_file "${PW_TMPFS_PATH}/dll_list_tmp" - try_remove_file "${PW_TMPFS_PATH}/fonts_list_tmp" - try_remove_file "${PW_TMPFS_PATH}/settings_list_tmp" + try_remove_file "${PW_TMPFS_PATH}/dll_list_tmp" + try_remove_file "${PW_TMPFS_PATH}/fonts_list_tmp" + try_remove_file "${PW_TMPFS_PATH}/settings_list_tmp" case "$YAD_STATUS" in 0) @@ -7071,11 +7196,6 @@ portwine_start_debug () { pw_skip_get_info kill_portwine export PW_LOG=1 - if [[ -z "$VULKAN_DRIVER_NAME" ]] || [[ "$VULKAN_DRIVER_NAME" == "llvmpipe" ]] ; then - pw_notify_send -i warning \ - "${translations[Attention working version of vulkan not detected!]}" \ - "${translations[It is recommended to run games in OpenGL (low performance possible)!]}" - fi echo "${translations[PortProton was launched in creation mode PortProton.log and it is successfully stored in the root directory of the port]}" > "${PORT_WINE_PATH}/PortProton.log" echo "${translations[To diagnose the problem, copy ALL of the log to:]} https://linux-gaming.ru/t/opisanie-kategorii-portproton-pomoshh/1642" >> "${PORT_WINE_PATH}/PortProton.log" echo "-------------------------------------------------------------" >> "${PORT_WINE_PATH}/PortProton.log" @@ -7416,6 +7536,7 @@ gui_open_user_conf () { restart_pp --userconf ;; 2) + unset PW_VULKAN_DRIVER_USE echo "${PW_USERCONF_GUI}" > "${PORT_WINE_PATH}/data/user.conf" print_info "Restarting..." restart_pp --userconf diff --git a/data_from_portwine/scripts/start.sh b/data_from_portwine/scripts/start.sh index 648f2bbc..18681954 100755 --- a/data_from_portwine/scripts/start.sh +++ b/data_from_portwine/scripts/start.sh @@ -307,8 +307,14 @@ if [[ "${SKIP_CHECK_UPDATES}" != 1 ]] ; then PW_FILESYSTEM=$(stat -f -c %T "${PORT_WINE_PATH}") export PW_FILESYSTEM - background_pid --start "pw_get_tmp_files" "1" - background_pid --start "pw_check_glxinfo" "2" + background_pid --start "pw_check_vulkan" "1" + background_pid --start "pw_get_tmp_files" "2" + background_pid --start "pw_check_glxinfo" "3" +fi + +if [[ -z $PW_GPU_USE || $PW_GPU_USE == "disabled" ]] ; then + unset PW_GPU_USE + pw_check_dxvk fi # create lock file @@ -560,22 +566,8 @@ if [[ -f "$portwine_exe" ]] ; then gui_userconf fi - if [[ -z $PW_VULKAN_USE ]] \ - || [[ $PW_VULKAN_USE == [3-5] ]] - then - if [[ -e "/sys/module/nvidia/version" ]] ;then - if [[ $( 550.54.13 ]] - then export PW_VULKAN_USE="6" - else export PW_VULKAN_USE="2" - fi - else - background_pid --stop "pw_check_glxinfo" "2" - if [[ $(grep "Version:" "$PW_TMPFS_PATH/glxinfo.tmp" | awk '{print $2}') > 24.9.9 ]] - then export PW_VULKAN_USE="6" - else export PW_VULKAN_USE="2" - fi - fi - fi + [[ $PW_VULKAN_USE == [3-5] ]] && unset PW_VULKAN_USE + pw_check_dxvk if [[ $PW_GUI_DISABLED_CS != 1 ]] ; then pw_create_gui_png @@ -596,13 +588,6 @@ if [[ -f "$portwine_exe" ]] ; then fi fi - case "$PW_VULKAN_USE" in - 0) PW_DEFAULT_VULKAN_USE="$SORT_OPENGL!$SORT_NEWEST!$SORT_STABLE!$SORT_SAREK" ;; - 1) PW_DEFAULT_VULKAN_USE="$SORT_SAREK!$SORT_NEWEST!$SORT_STABLE!$SORT_OPENGL" ;; - 2) PW_DEFAULT_VULKAN_USE="$SORT_STABLE!$SORT_NEWEST!$SORT_SAREK!$SORT_OPENGL" ;; - *) PW_DEFAULT_VULKAN_USE="$SORT_NEWEST!$SORT_STABLE!$SORT_SAREK!$SORT_OPENGL" ;; - esac - KEY_START="$RANDOM" "$pw_yad" --plug=$KEY_START --tabnum="1" --form --separator=";" $START_GUI_TYPE \ --gui-type-box="$START_GUI_TYPE_BOX" --gui-type-layout="$START_GUI_TYPE_LAYOUT_UP" \ diff --git a/data_from_portwine/scripts/var b/data_from_portwine/scripts/var index 454d5487..e255d3f7 100755 --- a/data_from_portwine/scripts/var +++ b/data_from_portwine/scripts/var @@ -34,7 +34,6 @@ export PW_MESA_VK_WSI_PRESENT_MODE="disabled" export PW_VKD3D_FEATURE_LEVEL="disabled" export PW_USE_EAC_AND_BE="1" export PW_USE_US_LAYOUT="0" -export PW_GPU_USE="disabled" export PW_LOCALE_SELECT="disabled" export PW_DINPUT_PROTOCOL="0" export PW_USE_VRCLIENT="0"