LINUX.ORG.RU
решено ФорумGames

Proton GE и DXVK. Как проверить, какой API используется?

 , , , ,


0

1

Решение проблемы:
Proton GE и DXVK. Как проверить, какой API используется? (комментарий)

Привет всем!

Вздумал я тут поиграть немного в Mafia II. Для этого скачал последний Proton GE версии 6.1, распаковал и запустил без использования Steam. Игра работает хорошо. Заинтересовался, какой FPS она выдаёт. Нагуглил про DXVK_HUD, выставил

DXVK_HUD=devinfo,fps
Ничего не изменилось. Погуглил, как в любых VK приложениях получить счётчик кадров. Оказывается, можно с помощью
VK_INSTANCE_LAYERS=VK_LAYER_MESA_overlay VK_LAYER_MESA_OVERLAY_CONFIG=position=top-left
Запустил с такими переменными окружения. И опять ничего. Хм... Попробовал с ними же vkcube - работает, панель с информацией есть. Попробовал другую игру - Kingdom Come Deliverance, с теми же переменными окружения. Никакой панели нет. Попробовал с
GALLIUM_HUD="simple,fps"
И обе игры стали показывать счётчики кадров. Но ведь это счётчик для OpenGL!

Вывод? Не работает DXVK и Proton вызовы Direct3D транслирует в OpenGL? Странно, учитывая то, что Proton должен использовать DXVK по умолчанию. Как проверить что именно он использует? Как заставить использовать DXVK?

Спасибо!

★★★★★

Последнее исправление: ls-h (всего исправлений: 3)

Ничего не изменилось

значит это не dxvk

И опять ничего

как бы намекает, не правда ли?

Но ведь это счётчик для OpenGL

это встроенный счётчик mesa, по-моему он может пахать везде

anonymous
()

Драйвер Vulkan установлен? Сам API поддерживается видеокартой? Переменная PROTON_USE_WINED3D установлена?

rootree
()
Ответ на: комментарий от rootree

Первые два вопроса к тому, что в случае vkcube может использоваться софтварный lavapipe. А он кастрированный и поддерживает всего 12 расширений.

rootree
()
Ответ на: комментарий от rootree

правильно бы он делал, если бы рисовался, а не был «только для». ну что, впрочем от швабодки другого можно было не ожидать

anonymous
()

Вне Steam DXVK в Proton’е автоматически и не будет использоваться, тебе его вручную нужно установить в префикс, как и в случае с обычным Wine. За установку и включение DXVK (и не только) отвечает питоновский скрипт «proton», который используется только в Steam. К Proton-GE это тоже относится.

Когда ты запускаешь Proton вне Steam напрямую через бинарник wine, то этот питоновский скрипт не используется. Помимо того, что DXVK и vkd3d из-за этого не устанавливаются автоматически, также теряется возможность использовать переменные, имя которых начинается с PROTON_, так как за их обработку тоже отвечает этот скрипт.

Убедиться в этом можно, изучив этот самый скрипт. Либо можно просто запустить игру в Steam и вне его (одним и тем же протоном) и сравнить результат.

Kron4ek ★★★★★
()
Последнее исправление: Kron4ek (всего исправлений: 4)

А насчет установки DXVK, есть три способа: установка скриптом из состава самого DXVK, установка через winetricks и ручная установка, путем закидывания библиотек в каталоги system32 и syswow64 и переопределением их на «Сторонняя» в winecfg.

Через winetricks проще всего:

WINEPREFIX=/path/to/prefix winetricks dxvk

Если префикс стандартный (~/.wine), то переменную WINEPREFIX можно не указывать.

И DXVK_HUD - это надежный способ проверки DXVK. Если худ не появляется, значит DXVK не используется.

Kron4ek ★★★★★
()
Последнее исправление: Kron4ek (всего исправлений: 1)
Ответ на: комментарий от rootree

Драйвер Vulkan установлен? Сам API поддерживается видеокартой?

Да, установлен. Да, поддерживается.

ls-h ★★★★★
() автор топика
Ответ на: комментарий от rootree

vkcube может использоваться софтварный lavapipe

А как проверить это, что использует vkcube?

ls-h ★★★★★
() автор топика
Ответ на: комментарий от Kron4ek

Тогда компилишь dxvk, получаешь d3d9.dll, d3d11.dll, dxgi.dll и что-то ещё для d3d10. Копируешь d3d9.dll в директорию с запускашкой игры. Переопределяешь в winecfg d3d9 в native.

robus ★★★★★
()
Ответ на: комментарий от robus

Так это понятно. Я выше уже все написал в двух своих комментариях. Даже компилить не надо, можно готовый релиз взять со страницы releases.

Kron4ek ★★★★★
()
Ответ на: комментарий от Kron4ek

Вне Steam DXVK в Proton’е автоматически и не будет использоваться

Вот оно что!

(и не только)

Есть ещё что-то полезное, что следовало бы из него применять к обычному Proton'у без Steam?

ls-h ★★★★★
() автор топика
Ответ на: комментарий от Kron4ek

установка скриптом из состава самого DXVK

Спасибо! Установил скриптом.

И DXVK_HUD - это надежный способ проверки DXVK. Если худ не появляется, значит DXVK не используется.

При указании

DXVK_HUD=devinfo,fps
ничего не изменилось после установки. Но вот такая конструкция теперь заработала:
VK_INSTANCE_LAYERS=VK_LAYER_MESA_overlay VK_LAYER_MESA_OVERLAY_CONFIG=position=top-left
и в консоли теперь есть куча отладочных сообщений, вида VK_EXT_*.
Кроме того, некоторые глюки с графикой в игре пропали. Поэтому у меня впечатление, что DXVK таки используется.

ls-h ★★★★★
() автор топика
Последнее исправление: ls-h (всего исправлений: 1)
Ответ на: комментарий от robus

Не путай.

Спасибо, я сразу понял, что это разные вещи, для разных API.

ls-h ★★★★★
() автор топика
Ответ на: комментарий от ls-h

Есть ещё что-то полезное, что следовало бы из него применять к обычному Proton’у без Steam?

Еще Esync/Fsync желательно включить с помощью переменной WINEESYNC/WINEFSYNC, так как они тоже по умолчанию выключены вне Steam. Это как минимум снизит нагрузку на процессор от wineserver, и может значительно поднять производительность в играх.

export WINEESYNC=1
export WINEFSYNC=1

Для Fsync нужны патчи на стороне ядра, а Esync на любом ядре работает. Однако для Esync нужно поднимать лимит на файловые дескрипторы (ulimit -n). Посмотри, если у тебя по умолчанию низкий лимит (меньше миллиона), то его нужно поднимать, иначе игры с включенным Esync будут крашиться.

ulimit -n

Можно включить одновременно и Esync, и Fsync, но Wine только что-то одно будет использовать (если ядро поддерживает Fsync, то его, иначе будет использовать Esync).

Kron4ek ★★★★★
()
Последнее исправление: Kron4ek (всего исправлений: 2)
Ответ на: комментарий от ls-h

При указании DXVK_HUD=devinfo,fps ничего не изменилось после установки. Но вот такая конструкция теперь заработала:

Должно работать. Точно правильно указываешь? Лучше отдельно через export, а не в одну строку вместе с командой запуска. Примерно так:

export DXVK_HUD=devinfo,fps
proton-ge-6.1/bin/wine game.exe

Поэтому у меня впечатление, что DXVK таки используется.

Может и так, но это ненормально, что худ не работает. Там еще рядом с exe файлом игры должен появляться dxvk-cache и лог файлы dxvk.

Kron4ek ★★★★★
()
Последнее исправление: Kron4ek (всего исправлений: 1)
Ответ на: комментарий от Kron4ek

Спасибо! Да, так заработало. Странность какая-то.

ls-h ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.