今天,Mesa开源显卡驱动架构迎来了也许是最为有趣、最为重要的一个Gallium3D状态追踪器(State Tracker)。通过它,微软DirectX 10/11 API终于真正投入了Linux的怀抱。
Luca Barbieri宣布,他已经在Gallium3D驱动中增加了一个名为“d3d1x”的状态追踪器,籍此实现了对Direct3D 10/11 COM API的部署。虽然还只是一个很不成熟的初期版本,但已经可以正常工作,能够运行一些DX10/11纹理演示程序。
这种做法自然不同于简单地将Direct3D调用翻译成OpenGL指令,就像Wine现在做得那样,而是在Gallium3D、TGSI中原生实现了Direct3D 10/11,让显卡驱动和硬件得以直接对话。当然,这一切都是免费开源的!
更令人激动的是,AMD fglrx、NVIDIA官方显卡驱动也都能得到支持,并且并不会很复杂。得益于Direct3D 10/11的精妙设计和与Gallium的密切关系,这种做法并不会导致明显的延迟,维护也非常方便,用户可以更简单地在官方驱动、Gallium开源驱动之间切换。
这也为非Windows平台上的图形编程提供了OpenGL之外的另一种选择,特别是Linux和其他免费开源系统上。优秀的设计让Direct3D 10/11 API要比OpenGL好得多,支持所需的代码和开发时间也少得多,确切地说是大约26000行代码。
至于Wine如何调用这个状态追踪器,目前还没有公布任何DLL,不过Luca说这应当很容易实现。迄今为止,Wine仍然只能支持到DX10,实现DX11还很遥远。
VMware此前也曾开发了一个Direct3D状态追踪器,但只能支持到DX9、并不开源、仅面向Windows Gallium3D。
详细见此:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=92617aeac109481258f0c3863d09c1b8903d438b
慕尼黑啤酒节上的庆祝:
本文来源:不详 作者:佚名