Direct3D 10/11 state tracker для Gallium3d
Сегодня в ветку mesa master Luca Barbieri добавил код (-0/+26335), реализующий начальную поддержку Direct3D 11 для Gallium3d.
Поддержка Direct3D 10 и 10.1 также присутствует (сгенерирована автоматически на основе Direct3D 11).
Данный код реализует лишь начальную поддержку, но тестовые приложения (tri, gears, texturing demos) уже работают.
Код необходим для того, чтобы реализовать поддержку как можно большего количества API, а также чтобы запускать Windows Direct3D 10/11 приложения в Linux используя wine. dll для wine пока не добавлены, но это не должно составить затруднений.
В первую очередь, поддерживаются открытые драйверы, использующие Gallium3d (intel, radeon r300g/r600g, nouveau), также возможно использование данного кода через OpenGL проприетарными драйверами nvidia и fglrx.
Данная реализация содержит:
- Заголовочные файлы для Direct3D 10, 10.1, 11 и DXGI 1.1 (частично основаны на заголовочных файлах Wine для D3D10 и DXGI 1.0)
- Парсер для Direct3D 10/11 DXBC и TokenizedProgramFormat (TPF)
- Транслятор шейдеров из TPF в TGSI
- Реализацию основных интерфейсов Direct3D 11
- Автоматически сгенерированную реализацию Direct3D 10 и 10.1
- Реализацию DXGI, используя «родной» («native») для EGL state tracker framework
- Демо-приложения, работающие либо на Windows, либо на данной реализации:
- d3d11tri, клон tri
- d3d11tex, (multi)texturing demo
- d3d11gears, улучшенная версия glxgears
- d3d11spikysphere, D3D11 tessellation demo (на данный момент только для Windows)
- Загрузчик для Microsoft HLSL компилятора, необходимого для перекомпиляции шейдеров (скомпилированный шейдер-байткод также включен)