Pages

Wednesday, September 22, 2010

Direct3D 10 and 11 Is Now Natively Implemented On Linux

Written by Michael Larabel

Its a pity Luca Barbieri or any Mesa / Gallium3D developers are not at Oktoberfest as they are deserving of more than a few Maß of Augustiner. In fact, today a new Gallium3D state tracker was pushed into Mesa and it's perhaps the most interesting state tracker for this open-source graphics driver architecture yet. Its a state tracker that exposes Microsoft's DirectX 10/11 API on Linux! And it's already working and can be hooked into Wine!

Luca Barbieri made a rather significant commit today that adds a state tracker dubbed "d3d1x", which implements the Direct3D 10/11 COM API in Gallium3D. Luca says this is just the initial version, but its already working and can run a few DirectX 10/11 texturing demos on Linux at the moment. This is not a matter of simply translating the Direct3D calls and converting them to OpenGL like how Wine currently handles it, but is natively implemented within Gallium3D and TGSI to speak directly to the underlying graphics driver and hardware. Thanks to Gallium3Ds architecture, this Direct3D support essentially becomes "free" to all Linux drivers with little to no work required.

As said in the commit, "The primary goal is to realize Galliums promise of multiple API support, and provide an API that can be easily implemented with just a very thin wrapper over Gallium, instead of the enormous amount of complex code needed for OpenGL. The secondary goal is to run Windows Direct3D 10/11 games on Linux using Wine."

In regards to Wine taking advantage of this state tracker, no DLLs have been published yet for Wine to hook into this state tracker, but Luca says that should be quite easy to accomplish.

If things could not get any better, "Fglrx and nvidia drivers can also be supported by writing a Gallium driver that talks to them using OpenGL, which is a relatively easy task. Thanks to the great design of Direct3D 10/11 and closeness to Gallium, this approach should not result in detectable overhead, and is the most maintainable way to do it, providing a path to switch to the open Gallium drivers once they are on par with the proprietary ones."

This is incredible news especially as Wine only has limited DirectX 10.0 support and lacks no form of DirectX 11.0 at the moment.

Full Article


No comments: