Linux 为何不把图形用户界面写入内核?

Linux 为何不把图形用户界面写入内核?

早先是没能力,之后是没必要,现在是不应该

先插一句,现代Windows9的图形也不在内核里,只是还保留一组兼容。

90年代时的计算机都是两套图形系统:一套是普通软件窗口API9,Windows上不论是MFC还是ATL9背后都是gdi32.dl,Linux无论GTK还是QT背后都是X,后者用CPU渲染出一张图片,然后送入显存,显示适配器把显存转成VGA信号输出;另一套是游戏,他们会调用DirectX/OpenGL,后者用GPU渲染出3D图像,然后直接进显存输出。当时玩游戏进入退出时屏幕都会黑一下,这就是两套图形系统都要分别设置显卡参数,显卡在切换状态。同时还有个全屏模式,游戏会独占屏幕,其它应用和桌面都不显示。

显然图形一这种软件渲染模式效率低下,进内核就是好选择。在微软里,盖茨一声令下这事就妥了。但Linux做不到,因为他只管内核,图形是另一个叫XFree86的组织实现的,让两个互不隶属的国际组织相互协调做复杂架构升级是不可能的。所以Windows的图形能力很长时间里都是碾压的。

然后就到了Windows Vista9,盖茨给出了放到今天仍然先进的架构,其中图形系统也做了大改。应用改为调用GDI+,后者调用Direct2D,背后就是DirectX。也就是说整个Windows桌面就是一个大游戏,所有渲染都是GPU完成的,进出游戏也不会黑屏了,游戏也能窗口玩了。全GPU硬件渲染的效率远高于CPU软件渲染,这时图形就没必要进内核了

Linux这边也没闲着,虽然还是保留了X的架构,但增加了扩展接,比如著名的AIGLX。新接口让应用先找OpenGL渲染,然后通知X去找GPU要结果,相当于旧架构融入了新技术。应用只要用新版GTK/QT重新编译就能享受提升。这时Linux的图形能力在理论上是不亚于Windows的,做不好那是显卡驱动的锅,所以Fuck Nividia。

到了今天,Windows架构改动不大,Vista打下的基础太好了,只有一些小改动。一个是原先进了内核的旧图形系统win32k.sys9,微软出于向后兼容还继续保留,但总出bug,所以一气之下用Rust重写了。另一个是DirectX升级到10,彻底释放了CPU,进一步提升GPU利用率。

Linux这些年倒是大改革,新的Wayland机制废掉了X,相当于以新技术为基础兼容老架构。走到这其实三大0S的图形系统已经非常接近了,都是应用直接找GPU渲染,然后再由窗口管理器整合显示,无非是渲染接口不同。此时再说图形进内核就是不应该了。

但三家所用的DirectX/Vulkan9/Mentle虽然长相不同,但内在机理都一样,所以可以互转。能在Linux上玩Windows 3A大作就是系统背后把DX指令翻译成了Vulkan,效率还不低。

总之,图形进内核是个历史的插曲,今天不必在意了

相关推荐
A小辣椒20 小时前
TShark:Wireshark CLI 功能
linux
A小辣椒1 天前
TShark:基础知识
linux
AlfredZhao1 天前
OCI 明明分配了 200G 系统盘,为什么 df 只看到 30G?
linux·oci
AlfredZhao2 天前
vi 删除指定范围的行,不用再反复按 dd
linux·vi
用户9718356334662 天前
银河麒麟 KY10 申威(SW64) 安装 nginx-1.16.1-2.p01.ky10.sw_64.rpm 详细步骤
linux
猪脚踏浪2 天前
linux 拷贝文件或目录到指定的位置
linux
摇滚侠3 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
bush43 天前
嵌入式linux学习记录十四、术语
linux·嵌入式
载数而行5203 天前
Linux 11 动态监控指令top
linux
不会C语言的男孩3 天前
Linux 系统编程 · 第 8 章:进程基础
linux·c语言