Когда-то давно, в далеком-далеком 2010 году, один человек сделал поддержку Direct3D 10/11 State Tracker в Wine, но она была достаточно плохой, ее забросили и не включили в основную ветку. А вчера, Christoph Bumiller сделал поддержку Direct3D 9 State Tracker и написал об этом в список рассылки Wine, код проходит все wined3d9 тесты.
Причины, побудившие его сделать это, таковы:
- Gallium не был готов для D3D11, да и до сих пор не готов, зато готов для D3D9
- Автор не видит мотивирующих приложений, использующих Direct3D 10/11
- Работа автора написана на C вместо C++, и не использует хаки темплейтов, чтобы заставить gcc генерировать COM-compatible vtables
Что самое важное — Direct3D 9 State Tracker работает уже сейчас.
Автор погонял Skyrim, Civilization 5, Anno 1404 и StarCraft 2 и отметил прибавку в FPS до 2 раз, но бенчмарков еще нет.
Работает это только с Gallium3D-драйверами nouveau (nvc0, NVIDIA), r600g (AMD), swrast и, возможно, i915g.
Можете попробовать собрать это у себя.
github.com/chrisbmr/Mesa-3D/tree/gallium-nine — Патченный Gallium
github.com/chrisbmr/wine/tree/d3dadapter9-wip — Патченный Wine
Автор: ValdikSS