xorg(和wayland)使用什么api在屏幕上显示内容



xorg如何在屏幕上渲染某些内容?我认为它没有使用像opengl这样的图形api。有没有可能在程序中不运行xorg的情况下使用这样的api来绘制图形?

如今,他们通常会使用内核的Direct Rendering Manager子系统,该子系统可以通过/dev/dri/*设备节点和/syssysfs文件系统中的特殊文件进行访问。

服务器可以通过这些接口为客户端绘制屏幕(例如,在基本的X11的情况下(,但内核API也允许服务器为客户端直接绘制指定屏幕缓冲区(因此得名(,这就是wayland的正常工作方式,以及X11的直接渲染扩展。


或者,内核的旧帧缓冲区子系统可以通过设备节点/dev/fb*进行类似访问,但不允许硬件加速渲染。

在DRM之前,X服务器还用于直接访问图形卡的IO端口和内存映射IO,并实现了在用户空间中使用图形卡的设备驱动程序。


您可以直接使用DRM或帧缓冲区接口。通常与X11或wayland一起使用的客户端库可能也有后端。根据记忆,我认为至少SDL2和GTK+都支持这两种功能。但当然,在这样的设置下,您将无法真正使用多个窗口(除非您自己实现了窗口管理器(。

最新更新