diff --git a/data_from_portwine/scripts/functions_helper b/data_from_portwine/scripts/functions_helper index 5767900f..fd3e4e45 100755 --- a/data_from_portwine/scripts/functions_helper +++ b/data_from_portwine/scripts/functions_helper @@ -2817,12 +2817,23 @@ pw_check_vulkan () { fi } +pw_check_glxinfo () { + if [[ ! -f "${PW_TMPFS_PATH}/glxinfo.tmp" ]] ; then + TIMEOUT_CMD="5" + if pw_check_command glxinfo -B + then return 0 + else return 1 + fi + fi +} + pw_get_tmp_files () { for f_cmd in "gamescope --help" "lspci -k" "xrandr --current" "locale -a" do pw_check_command "$f_cmd" done pw_check_vulkan + pw_check_glxinfo # GALLIUM NINE unset FIND_D3D_MODULE D3D_MODULE_PATH diff --git a/data_from_portwine/scripts/start.sh b/data_from_portwine/scripts/start.sh index dc33a5bf..ed08d61e 100755 --- a/data_from_portwine/scripts/start.sh +++ b/data_from_portwine/scripts/start.sh @@ -495,6 +495,14 @@ esac ### GUI ### +INFO_3DAPI=${translations[Select DXVK and VKD3D versions for DirectX to Vulkan translation: + - The newest ones work only with MESA 25+ drivers, or NVIDIA 550.54.14+ + - Stable ones work with any drivers, provided that the video card supports Vulkan version 1.3+ + - Sarek works with almost any video card that supports Vulkan + - WineD3D OpenGL works on any PC, but with low performance and old games]} +INFO_WINE=${translations[Selecting a WINE version.]} +INFO_PREFIX=${translations[Select a prefix to launch the game/application (if you enter a non-existent name, a new prefix will be created).]} + unset PW_ADD_PREFIXES_TO_GUI if [[ -d "${PORT_WINE_PATH}/data/prefixes/" ]] ; then for PAIG in "${PORT_WINE_PATH}"/data/prefixes/* ; do @@ -524,6 +532,23 @@ SORT_SAREK="${translations[DXVK, VKD3D (Sarek) (Vulkan v1.1+)]}" SORT_STABLE="${translations[DXVK, VKD3D (Stable) (Vulkan v1.3+)]}" SORT_NEWEST="${translations[DXVK, VKD3D (Newest) (Vulkan v1.3+)]}" +if [[ -z $PW_VULKAN_USE ]] \ +|| [[ $PW_VULKAN_USE == [3-5] ]] +then + if [[ -e "/sys/module/nvidia/version" && $( 550.54.13 ]] \ + || [[ pw_check_glxinfo && $(grep "Version:" "$PW_TMPFS_PATH/glxinfo.tmp" | awk '{print $2}') > 25 ]] + then export PW_VULKAN_USE="6" + else export PW_VULKAN_USE="2" + 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 + if [[ $PW_WINE_USE == PROTON_LG ]] ; then PW_WINE_USE="${PW_PROTON_LG_VER}" PW_DEFAULT_WINE_USE="${PW_WINE_LG_VER}${DIST_ADD_TO_GUI}!${translations[GET-OTHER-WINE]}" @@ -568,81 +593,15 @@ if [[ -f "$portwine_exe" ]] ; then fi fi - [[ $PW_VULKAN_USE =~ [3-5] ]] && unset PW_VULKAN_USE - pw_check_vulkan - if [[ -f "${PW_TMPFS_PATH}/vulkaninfo.tmp" ]] ; then - unset VULKAN_VERSION_CHECK VULKAN_DRIVER_VERSION VULKAN_DEVICE_NAME - count="0" - while read -r line ; do - [[ $line =~ apiVersion ]] && VULKAN_VERSION_CHECK["$count"]="$line" - [[ $line =~ driverVersion ]] && VULKAN_DRIVER_VERSION["$count"]="$line" - if [[ $line =~ deviceName ]] ; then - if [[ $line == *"$PW_GPU_USE"* ]] ; then - VULKAN_DEVICE_NAME["$count"]="$PW_GPU_USE" - break - else - if [[ $line =~ llvmpipe ]] ; then - unset 'VULKAN_VERSION_CHECK["$count"]' 'VULKAN_DRIVER_VERSION["$count"]' - else - VULKAN_DEVICE_NAME["$count"]="$line" - (( count++ )) - fi - fi - fi - done < "${PW_TMPFS_PATH}/vulkaninfo.tmp" - if [[ ! ${VULKAN_VERSION_CHECK[*]} =~ 1.[3-9]+. ]] ; then - for number in $(seq 0 $(( ${#VULKAN_VERSION_CHECK[@]} - 1 ))) ; do - VULKAN_DRIVER_VERSION[$number]="${VULKAN_DRIVER_VERSION[$number]//*= /}" - VULKAN_DRIVER_VERSION[$number]="${VULKAN_DRIVER_VERSION[$number]// (*/}" - if [[ ${VULKAN_DEVICE_NAME[$number],,} =~ (amd|intel) && ${VULKAN_DRIVER_VERSION[$number]} > 25 ]] \ - || [[ ${VULKAN_DEVICE_NAME[$number],,} =~ nvidia && ${VULKAN_DRIVER_VERSION[$number]} > 550.54.13 ]] ; then - [[ -z $PW_VULKAN_USE ]] && export PW_VULKAN_USE="2" - PW_VULKAN_DRIVERS_NEW="1" - break - else - [[ -z $PW_VULKAN_USE ]] && export PW_VULKAN_USE="6" - fi - done - elif [[ ! ${VULKAN_VERSION_CHECK[*]} =~ 1.[1-2]. ]] ; then - [[ -z $PW_VULKAN_USE ]] && export 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 - - if [[ -z $PW_VULKAN_USE ]] ; then - export PW_VULKAN_USE="0" - PW_DEFAULT_VULKAN_USE="$SORT_OPENGL" - fi - - if [[ -z $PW_DEFAULT_VULKAN_USE ]] ; then - if [[ $PW_VULKAN_DRIVERS_NEW == "1" ]] ; then - 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" ;; - 6) 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 - 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 - fi - fi - export KEY_START="$RANDOM" if [[ $PW_GUI_START == "NOTEBOOK" ]] ; then "${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" \ --gui-type-text="$START_GUI_TYPE_TEXT" --gui-type-images="$START_GUI_TYPE_IMAGE" \ --image="$PW_ICON_FOR_YAD" --text-align="center" --text "$PW_COMMENT_DB" \ - --field="3D API : :CB" "$PW_DEFAULT_VULKAN_USE" \ - --field=" WINE : :CB" "$(combobox_fix "$PW_WINE_USE" "$PW_DEFAULT_WINE_USE")" \ - --field="PREFIX : :CBE" "$PW_ADD_PREFIXES_TO_GUI" \ + --field="3D API : !$INFO_3DAPI:CB" "$PW_DEFAULT_VULKAN_USE" \ + --field=" WINE : !$INFO_WINE:CB" "$(combobox_fix "$PW_WINE_USE" "$PW_DEFAULT_WINE_USE")" \ + --field="PREFIX : !$INFO_PREFIX:CBE" "$PW_ADD_PREFIXES_TO_GUI" \ 1> "${PW_TMPFS_PATH}/tmp_yad_form_vulkan" 2>/dev/null & "${pw_yad}" --plug=$KEY_START --tabnum=2 --form --columns="$START_GUI_NOTEBOOK_COLUMNS" --align-buttons --homogeneous-column \ @@ -683,9 +642,9 @@ if [[ -f "$portwine_exe" ]] ; then --gui-type-box="$START_GUI_TYPE_BOX" --gui-type-layout="$START_GUI_TYPE_LAYOUT_UP" \ --gui-type-text="$START_GUI_TYPE_TEXT" --gui-type-images="$START_GUI_TYPE_IMAGE" \ --image="$PW_ICON_FOR_YAD" --text-align="center" --text "$PW_COMMENT_DB" \ - --field="3D API : :CB" "$PW_DEFAULT_VULKAN_USE" \ - --field=" WINE : :CB" "$(combobox_fix "$PW_WINE_USE" "$PW_DEFAULT_WINE_USE")" \ - --field="PREFIX : :CBE" "$PW_ADD_PREFIXES_TO_GUI" \ + --field="3D API : !$INFO_3DAPI:CB" "$PW_DEFAULT_VULKAN_USE" \ + --field=" WINE : !$INFO_WINE:CB" "$(combobox_fix "$PW_WINE_USE" "$PW_DEFAULT_WINE_USE")" \ + --field="PREFIX : !$INFO_PREFIX:CBE" "$PW_ADD_PREFIXES_TO_GUI" \ 1> "${PW_TMPFS_PATH}/tmp_yad_form_vulkan" 2>/dev/null & "${pw_yad}" --plug=$KEY_START --tabnum=2 --form --columns="$START_GUI_PANED_COLUMNS" \ @@ -881,8 +840,6 @@ else else export PW_GUI_SORT_TABS=(2 3 4 5 1) fi - PW_DEFAULT_VULKAN_USE="$SORT_NEWEST!$SORT_STABLE!$SORT_SAREK!$SORT_OPENGL" - KEY_MENU="$RANDOM" IFS="%" @@ -906,9 +863,9 @@ else "${pw_yad}" --plug=$KEY_MENU --tabnum="${PW_GUI_SORT_TABS[2]}" --form --columns=3 --align-buttons --separator=";" \ --gui-type-layout="$MAIN_MENU_GUI_TYPE_LAYOUT" \ - --field=" 3D API : :CB" "$PW_DEFAULT_VULKAN_USE" \ - --field=" PREFIX : :CBE" "$PW_ADD_PREFIXES_TO_GUI" \ - --field=" WINE : :CB" "$(combobox_fix "$PW_WINE_USE" "$PW_DEFAULT_WINE_USE")" \ + --field=" 3D API : !$INFO_3DAPI:CB" "$PW_DEFAULT_VULKAN_USE" \ + --field=" PREFIX : !$INFO_PREFIX:CBE" "$PW_ADD_PREFIXES_TO_GUI" \ + --field=" WINE : !$INFO_WINE:CB" "$(combobox_fix "$PW_WINE_USE" "$PW_DEFAULT_WINE_USE")" \ --field="${translations[Create prefix backup]}!$PW_GUI_ICON_PATH/$BUTTON_SIZE_MM.png!":"CFBTN" '@bash -c "button_click --normal pw_create_prefix_backup"' \ --field=" Winetricks!$PW_GUI_ICON_PATH/$BUTTON_SIZE_MM.png!${translations[Run winetricks to install additional libraries to the selected prefix]}":"FBTN" '@bash -c "button_click --normal WINETRICKS"' \ --field=" ${translations[Clear prefix]}!$PW_GUI_ICON_PATH/$BUTTON_SIZE_MM.png!${translations[Clear the prefix to fix problems]}":"FBTN" '@bash -c "button_click --normal gui_clear_pfx"' \ @@ -1029,8 +986,8 @@ fi case "${VULKAN_MOD}" in "$SORT_OPENGL" ) export PW_VULKAN_USE="0" ;; "$SORT_SAREK" ) export PW_VULKAN_USE="1" ;; - "$SORT_NEWEST" ) export PW_VULKAN_USE="2" ;; - "$SORT_STABLE" ) export PW_VULKAN_USE="6" ;; + "$SORT_STABLE" ) export PW_VULKAN_USE="2" ;; + "$SORT_NEWEST" ) export PW_VULKAN_USE="6" ;; esac init_wine_ver