KMS отключен во время сеанса X11

Название уже подразумевает вопрос, так что блокирует выполнение из примера программы в этом репо https://github.com/dvdhrm/docs/tree/master/drm-howto

Это простая программа, показывающая KMS в действии, поэтому я скачал ее, скомпилировал и запустил. Это был выход:

michael@lord:~/Downloads/docs/drm-howto$ sudo ./modeset
[sudo] password for michael: 
using card '/dev/dri/card0'
mode for connector 59 is 1920x1080
ignoring unused connector 68
ignoring unused connector 71
ignoring unused connector 75
cannot set CRTC for connector 59 (13): Permission denied
exiting

Также обратите внимание, что на моей машине запущен сеанс X11. Кажется, X уже использует устройство /dev/dri/card0 и блокирует его для всех других программ.

Вот моя видеокарта:

michael@lord:~/Downloads/docs/drm-howto$ lspci | grep VGA
00:02.0 VGA compatible controller: Intel Corporation UHD Graphics 620 (rev 07)

Я также добавил i915.modeset=1 в /etc/initramfs-tools/modules и восстановил его с sudo update-initramfs -u поэтому он загружает драйвер изнутри моего ядра, а не со стороны xorg.

Существует также вероятность того, что мой драйвер не поддерживает KMS, но lspci показал, что у меня установлена ​​только внутренняя видеокарта Intel. Поэтому я остановился на пакете драйвера дисплея ядра xorg, который устанавливается по умолчанию из xserver-xorg-core,

Ни одно из этих изменений не вступило в силу. Единственный способ выполнить эти примеры - убить сеанс xorg и запустить его в tty.

Есть идеи?

2 ответа

Решение

Работает как положено. Только DRM-Master может выполнять настройку режима, и может быть только один DRM-Master. Х уже мастер.

Вы можете стать мастером, используя drmSetMaster() или неявно, открыв основной узел устройства, когда нет текущего мастера. (Пример кода становится DRM-Master неявно.)

Смотрите также справочную страницу drm-kms(7).

Чтобы выполнить любое приложение Modeset, сначала отключите сервер отображения,

sudo systemctl stop gdm3

sudo systemctl stop lightdm

перейти в командную строку через восьмеркуCTL + ALT + F1,CTL + ALT + F2,CTL + ALT + F3

и выполнить $sudo ./modeset

Другие вопросы по тегам