为什么 KMS drmModeSetCrtc() 在 X11 session 中 运行 时因权限被拒绝而失败?
Why does KMS drmModeSetCrtc() fail with permission denied while running in X11 session?
标题已经暗示了问题,那么是什么阻止了这个 repo 中示例程序的执行 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
另请注意,我的机器上有一个 运行ning X11 session。
似乎 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 端加载 driver。
也有可能我的driver不支持KMS,但lspci
显示我只安装了一个内部intel显卡。所以我坚持使用默认从 xserver-xorg-core
.
安装的 xorg core display driver 包
None 这些更改已经生效。
我可以执行这些示例的唯一方法是杀死 xorg session 并让它 运行 in tty.
有什么想法吗?
它按预期工作。只允许DRM-Master 进行模式设置,并且只能有一个DRM-Master。 X已经是master了。
您可以使用 drmSetMaster()
或在没有当前主设备时通过打开主设备节点隐式成为主设备。 (示例代码隐含地成为 DRM-Master。)
标题已经暗示了问题,那么是什么阻止了这个 repo 中示例程序的执行 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
另请注意,我的机器上有一个 运行ning X11 session。
似乎 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 端加载 driver。
也有可能我的driver不支持KMS,但lspci
显示我只安装了一个内部intel显卡。所以我坚持使用默认从 xserver-xorg-core
.
None 这些更改已经生效。 我可以执行这些示例的唯一方法是杀死 xorg session 并让它 运行 in tty.
有什么想法吗?
它按预期工作。只允许DRM-Master 进行模式设置,并且只能有一个DRM-Master。 X已经是master了。
您可以使用 drmSetMaster()
或在没有当前主设备时通过打开主设备节点隐式成为主设备。 (示例代码隐含地成为 DRM-Master。)