Вопрос или проблема
Я использую Debian 10 с ядром 5.10 через buster backports. Установленный драйвер для amd – amdgpu, и вывод dmesg
с моей точки зрения говорит о том, что драйвер распознается,
[ 2.774224] [drm] amdgpu kernel modesetting enabled.
[ 2.774409] amdgpu: Topology: Add CPU node
[ 2.774596] amdgpu 0000:03:00.0: amdgpu: Trusted Memory Zone (TMZ) feature not supported
[ 2.792960] amdgpu 0000:03:00.0: amdgpu: Fetched VBIOS from ATRM
[ 2.792962] amdgpu: ATOM BIOS: BR64533.001
[ 2.811910] amdgpu 0000:03:00.0: firmware: direct-loading firmware amdgpu/polaris12_k_mc.bin
[ 2.811918] amdgpu 0000:03:00.0: amdgpu: VRAM: 2048M 0x000000F400000000 - 0x000000F47FFFFFFF (2048M used)
[ 2.811919] amdgpu 0000:03:00.0: amdgpu: GART: 256M 0x000000FF00000000 - 0x000000FF0FFFFFFF
[ 2.811996] [drm] amdgpu: 2048M of VRAM memory ready
[ 2.811997] [drm] amdgpu: 3072M of GTT memory ready.
[ 2.812695] amdgpu 0000:03:00.0: firmware: direct-loading firmware amdgpu/polaris12_pfp_2.bin
[ 2.812704] amdgpu 0000:03:00.0: firmware: direct-loading firmware amdgpu/polaris12_me_2.bin
[ 2.812712] amdgpu 0000:03:00.0: firmware: direct-loading firmware amdgpu/polaris12_ce_2.bin
[ 2.812721] amdgpu 0000:03:00.0: firmware: direct-loading firmware amdgpu/polaris12_rlc.bin
[ 2.812776] amdgpu 0000:03:00.0: firmware: direct-loading firmware amdgpu/polaris12_mec_2.bin
[ 2.812832] amdgpu 0000:03:00.0: firmware: direct-loading firmware amdgpu/polaris12_mec2_2.bin
[ 2.813340] amdgpu 0000:03:00.0: firmware: direct-loading firmware amdgpu/polaris12_sdma.bin
[ 2.813348] amdgpu 0000:03:00.0: firmware: direct-loading firmware amdgpu/polaris12_sdma1.bin
[ 2.813383] amdgpu: hwmgr_sw_init smu backed is polaris10_smu
[ 2.813465] amdgpu 0000:03:00.0: firmware: direct-loading firmware amdgpu/polaris12_uvd.bin
[ 2.814530] amdgpu 0000:03:00.0: firmware: direct-loading firmware amdgpu/polaris12_vce.bin
[ 2.815130] amdgpu 0000:03:00.0: firmware: direct-loading firmware amdgpu/polaris12_k_smc.bin
[ 3.051566] amdgpu 0000:03:00.0: amdgpu: SE 2, SH per SE 1, CU per SH 5, active_cu_number 10
[ 3.055642] [drm] Initialized amdgpu 3.40.0 20150101 for 0000:03:00.0 on minor 1
и lshw -c video
показывает как интегрированную, так и дискретную графику
*-display
description: VGA compatible controller
product: Intel Corporation
vendor: Intel Corporation
physical id: 2
bus info: pci@0000:00:02.0
version: 02
width: 64 bits
clock: 33MHz
capabilities: pciexpress msi pm vga_controller bus_master cap_list rom
configuration: driver=i915 latency=0
resources: irq:130 memory:c1000000-c1ffffff memory:a0000000-afffffff ioport:4000(size=64) memory:c0000-dffff
*-display
description: Display controller
product: Advanced Micro Devices, Inc. [AMD/ATI]
vendor: Advanced Micro Devices, Inc. [AMD/ATI]
physical id: 0
bus info: pci@0000:03:00.0
version: c0
width: 64 bits
clock: 33MHz
capabilities: pm pciexpress msi bus_master cap_list rom
configuration: driver=amdgpu latency=0
resources: irq:131 memory:b0000000-bfffffff memory:c0000000-c01fffff ioport:3000(size=256) memory:c2300000-c233ffff memory:c2340000-c235ffff
Однако, когда я запускаю glxinfo -B
или DRI_PRIME=1 glxinfo -B
, вывод такой
name of display: :0
display: :0 screen: 0
direct rendering: Yes
Extended renderer info (GLX_MESA_query_renderer):
Vendor: VMware, Inc. (0xffffffff)
Device: llvmpipe (LLVM 7.0, 256 bits) (0xffffffff)
Version: 18.3.6
Accelerated: no
Video memory: 15817MB
Unified memory: no
Preferred profile: core (0x1)
Max core profile version: 3.3
Max compat profile version: 3.1
Max GLES1 profile version: 1.1
Max GLES[23] profile version: 3.0
OpenGL vendor string: VMware, Inc.
OpenGL renderer string: llvmpipe (LLVM 7.0, 256 bits)
OpenGL core profile version string: 3.3 (Core Profile) Mesa 18.3.6
OpenGL core profile shading language version string: 3.30
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile
OpenGL version string: 3.1 Mesa 18.3.6
OpenGL shading language version string: 1.40
OpenGL context flags: (none)
OpenGL ES profile version string: OpenGL ES 3.0 Mesa 18.3.6
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.00
Я также пробовал запускать программы, которые могли бы использовать GPU, но они продолжают использовать VMWare llvmpipe gpu, вывод radeontop
всегда показывает 0%. Как мне заставить машину использовать amdgpu?
Я нашел решение и публикую на случай, если кто-то столкнется с той же проблемой. Проблема возникла из-за устаревшей библиотеки mesa в Debian buster для конкретного процессора, который я использовал (10-е поколение). Обновление до Debian 11 или загрузка библиотек mesa из Debian 11 должно решить проблему.
Ответ или решение
Проблема с тем, что графический процессор AMD не используется в Debian 10, связана с несколькими аспектами, включая состояние драйвера и установленной библиотеки Mesa. Рассмотрим более подробно, как можно решить эту проблему.
1. Подтверждение работы драйвера amdgpu
Ваш вывод из команды dmesg
показывает, что драйвер amdgpu распознается и инициализируется корректно. Пример сообщений, таких как:
amdgpu kernel modesetting enabled.
...
Initialized amdgpu 3.40.0 20150101 for 0000:03:00.0 on minor 1
подтверждает, что драйвер установлен и активен. Вывод команды lshw -c video
также показывает, что как интегрированный графический процессор Intel, так и дискретный графический процессор AMD находятся в системе и правильно инициализированы.
2. Почему не используется графический процессор AMD?
Однако результаты команды glxinfo -B
показывают, что ваш вывод идет через рендерер llvmpipe
от VMware, а не от amdgpu. Это может происходить по следующим причинам:
-
Устаревшая библиотека Mesa: Ваша версия Mesa (18.3.6) в Debian 10 может быть недостаточно адаптирована для поддержки вашей конкретной модели CPU и GPU. В частности, для процессоров 10-го поколения может потребоваться более новая версия Mesa, которая лучше справляется с рендерингом.
-
Настройки конфигурации: Иногда конфигурация системы может быть настроена так, что она приоритизирует программное рендеринг (например, llvmpipe) вместо использования встроенного графического драйвера.
3. Решение проблемы
Ваше решение обновить до Debian 11 или загрузить библиотеки Mesa из более новой версии Debian оказалось правильным. Теперь рассмотрим конкретные действия, которые вы можете предпринять:
-
Обновите до Debian 11: Это самый надежный способ, так как Debian 11 (Bullseye) содержит более свежие версии драйверов и библиотек, которые, вероятно, решат вашу проблему с amdgpu.
-
Установка обновленных библиотек Mesa: Если по какой-либо причине обновление всей системы невозможно, вы можете рассмотреть возможность установки новых библиотек Mesa на Debian 10. Вы можете попробовать установить пакеты из репозиториев Debian 11, используя
apt
, но будьте осторожны, так как это может привести к конфликтам зависимостей. -
Проверка конфигурации Xorg: Убедитесь, что конфигурация вашего Xorg не переопределяет использование графического процессора. Проверьте файлы конфигурации в
/etc/X11/xorg.conf
или в директории/etc/X11/xorg.conf.d/
. -
Использование переменной среды для запуска программ: Для конкретных приложений вы можете использовать переменную среды
DRI_PRIME=1
, чтобы заставить их использовать дискретный GPU.
Заключение
Для решения проблемы с использованием графического процессора AMD в Debian 10 нужно рассмотреть возможность обновления до более новой версии, установленной библиотеки Mesa, или корректировки конфигурации Xorg. С учетом всех данных рекомендаций вы сможете обеспечить корректное использование вашего графического процессора.