Настройка режима ядра и Framebuffer?

24

С KMS графические драйверы перемещаются в ядро. Поскольку кадровый буфер уже был в ядре, я не ожидал, что это повлияет на работу кадрового буфера. Тем не менее, я прочитал, что KMS заменяет fb, увеличивает fb, требует fb и требует удаления поддержки fb. Какого черта? Ответ, который я ищу, - это объяснение отношений между KMS и кадровым буфером.

Я использовал uvesafb для получения собственного разрешения на tty. Моя цель здесь - понять, как это будет работать в системе с KMS. Это также помогло бы охватить такие вещи, как .. Ускоряется ли прокрутка с помощью KMS? Утилиты типа fbterm и fbida работают одинаково? Стабильность лучше?

user5184
источник

Ответы:

6

Прежде всего, есть два основных типа классических драйверов кадрового буфера:

  • Общие драйверы аппаратного и микропрограммного обеспечения (например, vga, vesafb / uvesafb, efifb)
  • Аппаратные драйверы (например, rivafb, atyfb)

Все классические драйверы кадрового буфера имели базовую поддержку настройки режима, но они практически не оказывали поддержку аппаратного ускорения.

С классическим X-дизайном это не было проблемой: чтобы получить 2D-ускорение, X-сервер работал от имени root и мог напрямую обращаться к оборудованию. В основном он полностью обошел драйвер фреймбуфера. Для 3d (и поддержки 2d на более новых картах) он также использовал бы драйвер DRM ядра, обеспечивающий доступ и управляемую видеопамять.

В этой настройке было два места, где была выполнена настройка режима: как в драйвере кадрового буфера ядра, так и в X-сервере пользовательского пространства. Такое дублирование кода (и случайные конфликты между драйверами, например, на VT-коммутаторе) не были идеальными.

Кроме того, в ядре было два отдельных драйвера для одного и того же устройства: драйвер кадрового буфера и драйвер DRM. В некоторых случаях (например, pre-kms intelfb) вы можете загрузить один или другой, но не оба одновременно.

KMS был решением этих проблем. Это:

  • Объединяет аппаратный драйвер кадрового буфера ядра и драйвер drm в один драйвер.
  • Предоставляет интерфейс для использования X-сервером для управления настройкой режима, поэтому X-серверу не требуется прямой доступ к оборудованию. (Действительно, с KMS X-серверу больше не нужны права root).

Некоторые интересные заметки: переход на то, что сейчас является KMS, фактически начался примерно в 2004 году; см . письмо Джона Смирла о реархитектуре консоли .

Чтобы ответить на ваши более конкретные вопросы:

  • Скорость, как правило, не будет хуже, чем у одного из не ускоренных универсальных драйверов (например, VGA, vesafb), но текстовая консоль KMS с кадровым буфером была разработана для удобства и аварийного использования, а не со скоростью, и на некоторых драйверах консоль не полностью ускорена. Например, на картах Intel очень плохие длинные строки.
  • Приложения, разработанные для использования старых интерфейсов кадрового буфера, будут по-прежнему работать с кадровым буфером KMS.
kepstin
источник
3

KMS устанавливает разрешение экрана и глубину в пространстве ядра, а не в пространстве пользователя. Так что да, это заменяет это. Это включает собственное разрешение в кадровом буфере.

Настройка режима ядра

wojox
источник
4
Вики-статьи о KMS легко найти, но объяснения ужасны. Как KMS может заменить fb и одновременно включить его? ФБ уже поддерживает родное разрешение, так что же отличается? Работают ли утилиты fb с KMS?
user5184
я не думаю, что кадровый буфер поддерживает родное разрешение, особенно когда монитор широкоформатный. например, собственное разрешение моего ЖК-монитора составляет 1680x1050, однако
кадровый буфер