Почему KMS drmModeSetCrtc () завершается сбоем с отказом в разрешении при работе в сеансе X11? - PullRequest
0 голосов
/ 21 октября 2018

Заголовок уже подразумевает вопрос, так что блокирует выполнение из примера программы в этом репо 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.

Есть идеи?

1 Ответ

0 голосов
/ 24 октября 2018

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

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

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

...