显示模式设定
显示模式设定(英语:Mode Setting)指的是为显卡设置屏幕分辨率与色深。现今的显示模式设定软件已经可以支持多屏输出和热插拔。
定位
[编辑]显示模式设定可以在内核空间或用户空间实现。在内核空间实现显示模式设定(英语:Kernel Mode Setting,即KMS)会更加灵活,而且这也可以让内核在出现致命错误时,即使正使用用户空间的显示服务器,也能在屏幕上输出错误信息。
在用户空间实现的显示模式切换(英语:User-space Mode Setting,即UMS)则需要超级用户权限才能直接访问硬件,而在使用基于内核的显示模式切换的情况下,用户空间的显示服务器并不需要超级用户权限,因而基于内核的显示模式切换安全性更佳。
KMS的应用
[编辑]FreeBSD
[编辑]FreeBSD基金会已宣布赞助一个FreeBSD开发者开发实现对图形执行管理器(英语:Graphics Execution Manager,即GEM)和KMS的支持[1]。
Linux
[编辑]Linux内核在2008年11月的2.6.28版加入GEM,为实现KMS打下了基础[2],而这将为支持GEM应用程序接口的转换表映射(英语:Translation Table Maps,即TTM)[注 1]内存管理器所替代[4]。
2009年3月23日发布的2.6.29版内核中加入了对Intel GMA显卡的支持[5]。
对R600系列之前的ATI显卡的支持已在2009年9月9号发布的2.6.31版内核中实现[6],利用直接渲染管理器实现的对R600和R700系列的支持则整合进2.6.32版内核,R800的支持也已整合进2.6.34版内核中。
因为NVIDIA并未放出所有实现KMS所需的相关文档,针对NVIDIA显卡开发开源驱动的Nouveau项目只能利用反向工程来获取必要信息开发实现KMS,这大大增加了开发难度。带有KMS支持的Nouveau驱动已加入2009年12月10日发布的2.6.33版内核,其2D加速性能已相当不错,但3D加速实现仍处于测试阶段。
Windows
[编辑]基于Windows NT的Windows版本都使用了基于内核的图形模式切换。由内核图形模式切换实现的内核错误输出即是著名的蓝屏死机。
OpenBSD
[编辑]注重安全性的OpenBSD也对内核图形模式切换很感兴趣,因为这样可以在不需要超级用户权限的情况下运行X Window系统[7]。
OpenSolaris
[编辑]OpenSolaris将把基于内核的图形模式设定作为新特性加入系统[8],对GEM的支持则已在snv_130版本中加入。
参见
[编辑]注释
[编辑]- ^ 主要针对ATI Radeon驱动和VIA S3 Graphics芯片组所设计[3]
参考资料
[编辑]- ^ GEM, KMS, and DRI Support for Intel Drivers. FreeBSD基金会. 17 February 2011 [2011-09-12]. (原始内容存档于2016-03-05).
- ^ 存档副本. [2011-09-18]. (原始内容存档于2018-06-12).
- ^ 存档副本. [2011-09-18]. (原始内容存档于2011-11-21).
- ^ 存档副本. [2011-09-18]. (原始内容存档于2011-11-06).
- ^ 存档副本. [2011-09-18]. (原始内容存档于2021-02-24).
- ^ 存档副本. [2011-09-18]. (原始内容存档于2015-11-05).
- ^ 存档副本. [2011-09-12]. (原始内容存档于2021-03-08).
- ^ 存档副本. [2011-09-12]. (原始内容存档于2020-10-22).