Как установить режим видео в Linux с KMS / DRM?

12

Как я могу установить режим видео в Linux низкоуровневым способом? Насколько я знаю, самый низкий уровень в пространстве пользователя будет запрашивать KMS через DRM. Это верно? И если так, как я могу добиться переключения режима и доступа к соответствующей «видеопамяти»?

Калеб
источник
Что такое км? До сих пор я не слышал ни о KSM, ни о переключении режимов.
BЈовић
Под KMS я имею в виду ссылку « Настройка режима ядра» .
Вы имеете в виду для кадрового буфера / консоли? Или для X11 / Xorg?
penguin359
@ penguin359 Либо. X и fb, если возможно, до тех пор, пока я использую libdrm напрямую ... (PS: желательно через C ++)
4
@litro чего ты пытаешься достичь? и во многих дистрибутивах kms активируется, если доступно и не выключено.
ксенотеррацид

Ответы:

3

KMS - настройка режима ядра, для тех, кто о ней не слышал - стала возможной благодаря видеодрайверам режима ядра. Эти драйверы видео в режиме ядра настраивают отображение кадрового буфера, которое по умолчанию является собственным разрешением подключенных мониторов. Если подключено более одного монитора, каждый монитор получит свое собственное разрешение, а виртуальная консоль будет ограничена минимальной шириной и высотой обоих мониторов.

Поскольку использование KMS приводит к созданию кадрового буфера, элементы конфигурации кадрового буфера должны работать. Я не могу проверить это в системе, в которой я сейчас нахожусь, потому что у нее нет драйвера KMS. Но позже я буду в системе с KMS и дам вам знать.

См. Документацию ядра по настройке режимов с параметром video = boot up для кадровых буферов для получения дополнительной информации.

Майкл Трауш
источник
2

Я не уверен, что вы действительно знаете, о чем вы спрашиваете, иначе вы бы сформулировали это так, чтобы отвечать. ... Но постараюсь ответить на ваш вопрос.

Вы хотите установить режим и использовать «видеопамять»? как старый режим дос X дней ?? Если это то, что вы хотите, вам нужно программировать с помощью Framebuffer. С учетом сказанного, было бы намного лучше работать с DirectFB. DirectFB похож на очень тонкий слой с ускорением на Framebuffer. Это низкий уровень, и, честно говоря, он настолько низок, насколько вам разумно когда-либо захочется писать приложения. Вы сможете устанавливать режимы и иметь контроль в стиле более низкого уровня. Если вам нужно прямое прямое управление стилем, вы должны написать Framebuffer raw, вы в основном создаете видео-плейер. Если вы чувствуете, что Framebuffer работает плохо, я не могу не подчеркнуть, проверьте DirectFB. Если у кого-то загружен драйвер KMS, его Framebuffer устанавливается через KMS / libdrm.

Теперь что касается libdrm, это пользовательская библиотека для работы с ядром DRM. Это не Framebuffer, это не API приложения, это библиотека системных устройств. Если вы хотите создать новый драйвер устройства, libdrm - абсолютный путь. Например, libdrm-radeon. Linux не DOS, единственный способ напрямую взаимодействовать с оборудованием - через ядро. Все обычные приложения никогда не отправляют код напрямую на аппаратное обеспечение, его нужно отключить в некоторых библиотеках lib / API / call. Существуют проекты, в которых используется академический / экспериментальный подход, например FBUI.

Я надеюсь, что мог бы, по крайней мере, указать вам правильное направление, если нет, то вы должны прокомментировать, а также обновить свой вопрос. Я следил за этим вопросом с момента его зачатия, которое было как минимум две миграции назад и не ближе к ответу. Без дополнительной информации, на самом деле больше ничего нельзя сказать.

Дж. М. Беккер
источник