LINUX.ORG.RU

eGPU в Sway возможен?

 , , , ,


0

1

Подключаю карту (RX 570) к ноуту (Arch Linux + Sway) через тандерболт (R43SG-TB3). Приоритет карт указал в файле /etc/environment.d/10sway.conf строчкой WLR_DRM_DEVICES=/dev/dri/card1:/dev/dri/card0. Карту авторизовал с помощью boltctl.

Если подключать монитор к карте, он перестает выдавать больше 30 фпс даже на рабочем столе. Но когда я запускаю игру через стим, мне внутриигровой счетчик показывает ~60 кадров, хотя я не наблюдаю никакой плавности. Самое интересное, что если перетащить окно с игрой на экран ноута, то изображение становится плавным. В данной схеме подключения видеокарта работает постоянно и не отключается, даже на рабочем столе.

Я читал, что композитор рендерит картинку на одной карте, а затем копирует ее на другую. Поэтому было бы логично наблюдать тормоза на экране ноута, но я их наблюдаю на мониторе, который подключен непосредственно к внешней карте. Нашел обсуждение похожей проблемы https://github.com/swaywm/sway/issues/4596, но решения там нет.

Я подключаю монитор через HDMI, пробовал сменить кабель на DP, но разницы никакой. Установка другого драйвера (amdvlk, vulkan-radeon, amdgpu-pro) тоже ничего не дала. Отключение экрана ноутбука через конфиг тоже не помогло.

Я пробовал подключать монитор к ноуту. В этом случае карта отключается на рабочем столе и лагов никаких нет. Когда запускаю игру, карта включается, и изображение остается плавным на обоих экранах. Но проблема в том, что мне удалось достичь этого случайно, всего 2 раза, когда переустановил драйвер и перезагрузился. После повторой перезагрузки игры перестали запускаться на внешней карте. Вот, что пишет мне lutris:

[vanya@cora ~]$ lutris
2022-01-29 06:16:37,593: Command /usr/bin/lspci after 3 seconds
2022-01-29 06:16:37,687: Magic not available. Unable to automatically find game executables. Please install python-magic
2022-01-29 06:16:37,719: Starting Lutris 0.5.9.1
2022-01-29 06:16:37,736: No cores found
2022-01-29 06:16:38,389: Failed to read content length on response from https://api.github.com/repos/lutris/dxvk/releases
2022-01-29 06:16:39,350: Startup complete
2022-01-29 06:16:39,355: Running Intel Mesa driver 21.3.4 on Mesa Intel(R) UHD Graphics 620 (WHL GT2) (0x3ea0)
2022-01-29 06:16:39,356: GPU: 1002:67DF 148C:2379 (amdgpu drivers)
2022-01-29 06:16:39,357: GPU: 8086:3EA0 1558:1325 (i915 drivers)
2022-01-29 06:16:39,358: i386 libgnutls.so.30 missing (needed by gnutls)
2022-01-29 06:16:39,406: Vulkan is not available or your system isn't Vulkan capable

Если выполнить vulkaninfo сразу после запуска композитора, то он выглядит адекватным и без ошибок, но если немного подождать, то он станет таким:

[vanya@cora ~]$ vulkaninfo
ERROR: [Loader Message] Code 0 : loader_scanned_icd_add: Driver /usr/lib/libvulkan_radeon.so supports Vulkan 1.2, but only supports loader interface version 4. Interface version 5 or newer required to support this version of Vulkan (Policy #LDP_DRIVER_7)
ERROR: [../mesa-21.3.4/src/amd/vulkan/radv_device.c:583] Code 0 : VK_ERROR_INCOMPATIBLE_DRIVER
ERROR: [Loader Message] Code 0 : setup_loader_term_phys_devs:  Failed to detect any valid GPUs in the current config
ERROR: [Loader Message] Code 0 : setup_loader_tramp_phys_devs:  Failed during dispatch call of 'vkEnumeratePhysicalDevices' to lower layers or loader to get count.
ERROR at /build/vulkan-tools/src/Vulkan-Tools-1.2.203/vulkaninfo/vulkaninfo.h:230:vkEnumeratePhysicalDevices failed with ERROR_INITIALIZATION_FAILED

Во время логина, если не сделать это сразу, а подождать, пока видеокарта отключится, можно увидеть такое сообщение:

https://ibb.co/wRhK5Y0

Потом во время запуска композитора все зависает на минуту, затем, если закрыть сеанс, можно увидеть это:

https://ibb.co/FxwLGBh

Во время выключения часто, но не всегда, вижу такое сообщение:

https://ibb.co/h9CC1DY

В общем, если у вас есть мысли, как можно сделать изображение плавным на мониторе в случае с подключением от карты, либо заставить карту адекватно работать в случае с подключением от ноута, то буду рад их почитать.



Последнее исправление: Rot1 (всего исправлений: 6)

Да уж, у вас там своя атмосфера.

Я как-то пару месяцев назад пробовал, как работает sway с двумя карточками амуды navi. Заметил, если рендерит одна, а картинку выводит вторая - то обе карты начинают утилизироваться так, что там ни на какое тридэ особенно и не хватит уже.

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

Не пользуюсь Sway, но предположу, что ты путаешь рендеринг финальной картинки композитором (который совсем легкий, а с direct scanout считай отсутствует) и рендеринг содержимого окон (который делают сами приложения, на каком именно гпу - зависит от используемого ими апи, его реализации и переменных окружения, которые влияют на их поведение). См. DRI_PRIME и переменные для Vulkan и апи ускорения (де)кодирования видео (уже не помню наизусть).

shatsky ★★
()

И вот это

Но когда я запускаю игру через стим, мне внутриигровой счетчик показывает ~60 кадров, хотя я не наблюдаю никакой плавности. Самое интересное, что если перетащить окно с игрой на экран ноута, то изображение становится плавным.

звучит так, будто игра рендерится на встройке, а при размещении окна на мониторе, подключенном к дискретке, еще и значительная задержка копирования кадров в ее память (у меня на декстопе при выводе отрендеренного на дискретке изображения через встройку особых задержек не было, но дискретка была в pcie x16, подключенном напрямую к процу).

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

Нашел свой скрипт-лаунчер, которым я делал оффлоадинг всего на дискретку

PREFERRED_GPU_PCI_ADDR="0000:01:00.0"
if [ -d "/sys/bus/pci/devices/${PREFERRED_GPU_PCI_ADDR}/drm/" ]; then
  dgpu_node="$(ls -d /sys/bus/pci/devices/0000:01:00.0/drm/card*)"
  export DRI_PRIME="${dgpu_node: -1}"
  # TODO: add logic to choose values based on GPU driver
  if true; then
    export VK_ICD_FILENAMES=/run/opengl-driver/share/vulkan/icd.d/radeon_icd.x86_64.json
    export LIBVA_DRIVER_NAME=radeonsi
    export VDPAU_DRIVER=radeonsi
  fi
fi
exec "$@"

Это работает, если дискретка под amdgpu, а встройка под чем-то другим, и путь к реализации Vulkan захардкожен такой, как у меня в NixOS.

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