Разработчик Intel Дамиан Томчак открыл четыре запроса на изменения: в репозиториях Proton и Wine от Valve, а также в проектах VKD3D-Proton и DXVK. Вместе изменения должны позволить играм с XeSS, запущенным через Proton на Linux и SteamOS, использовать матричные блоки XMX видеокарт Intel вместо более медленного резервного пути. Изменения пока не приняты.

XeSS – технология Intel для масштабирования изображения в играх с помощью нейросети. На видеокартах Intel с блоками XMX она работает в быстром режиме, на остальных видеокартах – через более медленный путь на инструкциях DP4a.
Почему XeSS в Proton работает медленнее
Как объясняет описание изменений для Wine, сейчас все игры с XeSS под Proton используют медленный путь. Быстрому пути с XMX нужны библиотеки, которых нет в открытом драйвере Vulkan от Intel.
Чтобы обойти это, в Wine добавляется встроенная библиотека libxess.dll. Она перехватывает вызовы XeSS, которые игра делает через Direct3D 12, и передаёт их Linux-версии библиотеки XeSS – libxess.so, которая может использовать XMX. Объекты Direct3D 12 при этом преобразуются в объекты Vulkan через интерфейс взаимодействия VKD3D-Proton.
Что меняется в каждом проекте
- Wine: добавлена встроенная libxess.dll. Она используется, только если Proton нашёл libxess.so, иначе игра работает со своей libxess.dll. Путь к библиотеке передаётся в переменной XESS_LIB_OVERRIDE.
- VKD3D-Proton: при создании устройства Vulkan включаются расширения и возможности, которые нужны XeSS. Их список VKD3D-Proton получает от самой XeSS через функции xessVKGetRequiredInstanceExtensions, xessVKGetRequiredDeviceExtensions и xessVKGetRequiredDeviceFeatures. Если libxess.dll не загружается или таких функций в ней нет, ничего не меняется.
- DXVK: сейчас DXVK скрывает видеокарты Intel от игр, в которых libxess.dll старше версии 2.0.2.68. У встроенной библиотеки Proton нет сведений о версии, поэтому проверка срабатывала всегда, и видеокарта Intel оказывалась скрыта. Теперь это ограничение не действует, если XeSS предоставляет Proton. Параметр dxgi.hideIntelGpu по-прежнему имеет приоритет.
- Proton: libxess.so ищется сначала по пути из XESS_LIB_OVERRIDE, если его задал пользователь, затем в каталоге contrib самого Proton и в системных библиотеках. Найденная библиотека используется, только если её версия не ниже версии libxess.dll игры. Иначе Proton оставляет игре её собственную libxess.dll. Пользовательская настройка WINEDLLOVERRIDES для libxess учитывается.
Изменение для Proton обновляет в нём подмодули Wine, VKD3D-Proton и DXVK до версий с остальными тремя изменениями, поэтому принимать его нужно последним.
К 20 октября отзыв оставил только автор DXVK, разработчик под ником doitsujin. Он считает, что предложенная проверка в DXVK может плохо работать: игры не ожидают, что сведения о видеокарте меняются у одной и той же фабрики DXGI, а некоторые запрашивают их прямо во время отрисовки. Он предложил принимать решение при первом вызове EnumAdapters и спросил, есть ли игры со старой версией XeSS, которым это нужно. Если таких нет, он предпочёл бы убрать эту часть изменения.
Откуда возьмётся libxess.so
Где взять Linux-библиотеку libxess.so, в описаниях изменений не сказано. В последнем публичном выпуске XeSS SDK 3.0.2 на GitHub от есть только библиотеки для Windows: libxess.dll, libxess_dx11.dll, libxess_fg.dll и libxell.dll. Если libxess.so не найдена, Proton продолжит использовать libxess.dll из комплекта игры.
В сентябре Intel уже выпустила DXVK-IGDEXT, с которым фирменные расширения Direct3D 11 для видеокарт Intel работают в играх под Proton.
Intel