Название уже подразумевает вопрос, так что блокирует выполнение из примера программы в этом репо 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.
Есть идеи?
Работает как положено. Только DRM-Master может выполнять настройку режима, и может быть только один DRM-Master. Х уже мастер.
Вы можете стать мастером, используя drmSetMaster()
или неявно, открыв основной узел устройства, когда нет текущего мастера. (Пример кода становится DRM-Master неявно.)
Смотрите также man-страница drm-kms (7).
Других решений пока нет …