Grand Theft Auto Running On Direct3D Natively On Linux Shows Gallium3D Potential
As a follow on from today's Nouveau vs. NVIDIA OpenGL driver benchmarking results that were published earlier today on Phoronix, in the comments an interesting video was pointed out of Grand Theft Auto IV using Direct3D 9.x natively under Linux.
The video itself was published last month but to date has only received 140 views. The video is of Grand Theft Auto IV running on native Direct3D 9 implemented using a long-public D3D9 Gallium3D state tracker. The system was running a NVIDIA GeForce GTX 670 graphics card on the latest Nouveau open-source driver. This latest Direct3D native implementation for Linux was published last year and natively implements the Direct3D 9 interfaces for Linux Gallium3D drivers. This implementation is more conservative than the prior Direct3D 10/11 state tracker that didn't work too well and ultimately was removed from the Mesa tree.
With native Linux applications not targeting the Direct3D API but instead OpenGL, Wine can hook into this D3D9 state tracker using out-of-tree patches. Wine developers haven't mainlined the support for using this state tracker on the basis of it only works for a subset of Linux users, just those with a Gallium3D driver that supports this also not yet merged state tracker. However, if jumping through these hoops, it's possible to use this Direct3D support as illustrated in the video below.
Tiziano Bacocco, the one that posted this GTA IV video using the Direct3D support, commented on the video, "even without reclock, the native dx9 with opensource drivers is many times faster than wine with opengl layer on binary driver, at least with gta IV." Those wishing to build the Direct3D 9 state tracker support for Nouveau have to use this Git repository where the necessary code is in place, until if/when it's merged to mainline Mesa, but the code itself now hasn't been touched by Christoph Bumiller in a number of months.
Latest Articles & Reviews
Latest Linux News
Most Viewed News This Week