Mesa и драйверы Intel

Графика

В строке «Mesa Intel® Graphics» соединены два разных слова, и путаница между ними — самая частая. Здесь про то, что такое Mesa, что такое драйвер, и почему это не одно и то же.

Два уровня, два имени

Уровень Что это Имя на вашей машине
Ядро Драйвер, который говорит с железом: память, режимы экрана, синхронизация i915
Пользовательское пространство Библиотека, которая превращает команды OpenGL/Vulkan в команды драйвера Mesa, драйвер iris

То есть i915 и iris — не альтернативы, а две половины одной дороги: iris вызывает i915, i915 управляет графическим процессором. Поэтому фраза «у меня драйвер Mesa» верна лишь наполовину: Mesa — это библиотека, а драйвер к железу — в ядре.

Что делает Mesa

Mesa — открытая реализация графических интерфейсов. Прикладной программе не нужно знать, какая у вас видеокарта: она вызывает OpenGL или Vulkan, а Mesa уже выбирает нужный драйвер.

Что реализует Mesa Зачем это приложению
OpenGL Рисование: игры, KDE, старые программы
Vulkan Современный низкоуровневый интерфейс: новые игры, эмуляторы, браузеры
EGL Связка графики с окнами и экраном
VA-API Аппаратное декодирование видео (через отдельный драйвер, см. ниже)

Драйверы внутри Mesa выбираются по железу:

Драйвер Для чего
iris Встроенная графика Intel начиная с 8-го поколения — ваш случай (Alder Lake, i5-1235U)
i965 Старая встроенная графика Intel (до 8-го поколения)
radeonsi, RADV Графика AMD (OpenGL и Vulkan)
nouveau, NVK NVIDIA (открытые драйверы)
llvmpipe Запасной софтверный: рисует процессор, медленно

llvmpipe — важное имя. Если в выводе glxinfo вы видите его вместо Intel, значит графика работает на процессоре: всё рисуется, но медленно, и аппаратного ускорения нет.

Как проверить, что работает именно GPU

# 1. Какой драйвер ядра взял устройство
$ lspci -k | grep -A3 -E 'VGA|3D'
Kernel driver in use: i915

# 2. Есть ли устройства DRM (доступ к GPU)
$ ls -l /dev/dri/
card0  renderD128

# 3. Что видит Mesa: рендерер, версия OpenGL, версия Mesa
$ glxinfo -B
OpenGL renderer string: Mesa Intel(R) Graphics (ADL GT2)
OpenGL version string: 4.6 (Compatibility Profile) Mesa 24.x

# 4. Vulkan (если установлены vulkan-tools)
$ vulkaninfo --summary | head -20

# 5. Что сказало ядро при загрузке
$ journalctl -k | grep -iE 'i915|drm' | head -20

Читается так:

  • i915 в lspci — драйвер ядра подхватил устройство. Если там vfio-pci или пусто — графикой управляет что-то другое;
  • card0 и renderD128 — устройства есть; renderD128 нужен для рендеринга без прав администратора;
  • Mesa Intel(R) Graphics в рендерере — работает GPU. llvmpipe — работает процессор;
  • версия Mesa в той же строке — то, что реально загружено, а не то, что стоит в пакетах.

Проверить, что пользователь имеет доступ к GPU:

$ id
$ ls -l /dev/dri/renderD128

Устройство обычно доступно группе render (или video). Если пользователь не в ней и права не выданы через systemd-logind, Mesa уходит в llvmpipe — и это выглядит как «графика тормозит» без всякой ошибки на экране.

Проверено на этой машине

Ubuntu 26.04, Dell Latitude 7400, ядро 7.0.0:

$ lspci -k | grep -A3 VGA
00:02.0 VGA compatible controller: Intel Corporation WhiskeyLake-U GT2 [UHD Graphics 620]
        Kernel driver in use: i915

$ ls /usr/lib/x86_64-linux-gnu/dri/ | grep -E '^(iris|swrast)'
iris_dri.so
swrast_dri.so

Драйвер ядра — i915; в Mesa есть iris (аппаратный путь для Intel) и swrast (программный запасной). Версия Mesa — 26.0.8 (пакет libgl1-mesa-dri 26.0.8-1ubuntu0.3).

Полная картина — от Mesa и от ядра:

$ glxinfo -B | grep -E 'OpenGL renderer|OpenGL version'
OpenGL renderer string: Mesa Intel(R) UHD Graphics 620 (WHL GT2)
OpenGL version string: 4.6 (Compatibility Profile) Mesa 26.0.8-1ubuntu0.3

$ journalctl -k | grep 'i915 0000:00:02.0' | head -3
i915 0000:00:02.0: [drm] Found coffeelake/ult (device ID 3ea0) integrated display version 9.00
i915 0000:00:02.0: [drm] VT-d active for gfx access
i915 0000:00:02.0: [drm] Finished loading DMC firmware i915/kbl_dmc_ver1_04.bin (v1.4)

Три вывода из этих строк:

  • рендерер — UHD Graphics 620 (WHL GT2), а не llvmpipe: GPU действительно работает;
  • OpenGL 4.6, Mesa 26.0.8 — то, что реально загружено;
  • ядро опознало чип как coffeelake/ult, device ID 3ea0, display version 9.00 (Whiskey Lake — родственник Coffee Lake, отсюда WHL в имени Mesa) и загрузило прошивку DMC — значит, энергосбережение дисплея работает.

И самое полезное — права на устройство:

$ ls -l /dev/dri/
crw-rw----+ 1 root video  226,   1 ... card1
crw-rw----+ 1 root render 226, 128 ... renderD128

$ getfacl /dev/dri/renderD128
user:tumanov:rw-

Плюс в правах (+) — это ACL: доступ выдан конкретному пользователю, а не всем из группы. Так делает systemd-logind для активной сессии, поэтому входить в группу render вручную не нужно. Если ACL нет, а пользователь не в группе, Mesa уйдёт в программный рендеринг.

Прошивка: то, что лежит отдельно

Для современных чипов Intel ядро загружает микропрограммы GuC и HuC — они отвечают за планирование задач на GPU и за часть видеоускорения. Лежат они в пакете с прошивками (linux-firmware в большинстве дистрибутивов), и если их нет, в журнале появляются сообщения о невозможности загрузить прошивку, а часть возможностей (например, аппаратное декодирование) тихо отключается.

Обновление прошивок — обычная причина «после обновления системы что-то сломалось в графике». Проверять в journalctl -k по словам firmware, GuC, HuC.

Видео: отдельный драйвер поверх Mesa

VA-API — интерфейс аппаратного декодирования. Mesa его поддерживает, но конкретный драйвер — отдельный:

  • для новых Intel — iHD (intel-media-driver в RPM-семействах, intel-media-va-driver в Debian/Ubuntu);
  • для старых — i965-va-driver.

Проверка — программой vainfo (пакет libva-utils): она перечисляет профили, которые железо умеет декодировать. Подробнее — в статье «Проверка GPU и видеоускорения».

Пакеты: что понадобится

Задача Debian/Ubuntu RPM (МОСТЕХ, РОСА)
Сама Mesa mesa-utils, libgl1-mesa-dri mesa-dri-drivers, mesa-utils
Vulkan vulkan-tools vulkan-tools
Проверка VA-API libva-utils libva-utils
Нагрузка на GPU intel-gpu-tools intel-gpu-tools
Прошивки linux-firmware linux-firmware

Имена в RPM-семействе проверять в своём менеджере пакетов: dnf search mesa или urpmi --search mesa.

Источники

  • Документация Mesa: https://docs.mesa3d.org/ — драйверы, поддерживаемые API, версии.
  • Документация ядра: https://docs.kernel.org/gpu/ — DRM, i915, прошивки GuC/HuC.
  • man 1 lspci, man 1 glxinfo (пакет pciutils / mesa-utils), man 1 vulkaninfo.
  • Имена пакетов и наличие драйвера iris проверены на Debian/Ubuntu-системе (пакет mesa-utils 9.0.0, intel-gpu-tools 2.3, vulkan-tools 1.4.341; драйвер iris_dri.so входит в пакет Mesa).

Что ещё не проверено

  • На рабочем ноутбуке (МОСТЕХ) команды не выполнялись — доступа нет. На этом проверено: i915, iris и swrast, Mesa 26.0.8, рендерер UHD Graphics 620 (WHL GT2), OpenGL 4.6, прошивка DMC, ACL на /dev/dri/renderD128.
  • Не проверено здесь: vulkaninfo и intel_gpu_top (не установлены), а vainfo падает — нет драйвера VA-API (разобрано в статье «Проверка GPU»).
  • Точное число исполнительных блоков у Iris Xe в i5-1235U здесь не приводится: это характеристика конкретной модели, её надо брать из документации Intel, а не из статьи.
Оценка статьи 0

Комментарии

Пока комментариев нет.