В Gallium добавлена поддержка Direct3D 10/11

В свободную библиотеку Mesa была добавлена новая реализация COM API Direct3D 10, 10.1 и 11. Несмотря на то, что это только первая версия, большинство необходимого кода уже на месте, также работают некоторые Direct3D демо программы (tri, шестерёнки и простейшее текстурирование).

Главная цель данной работы - это доказать то, что Gallium является жизнеспособным методом по реализации множественных API, используя лишь только тонкую прослойку из кода, тогда как, например, для реализации OpenGL требуется огромное количество сложного кода.

Вторая очень важная цель - это реализовать поддержку DirectX 10/11 игр в Linux. Wine в настоящее время поддерживает лишь очень небольшую часть вызовов Direct3D 10 и вообще не поддерживает Direct3D 10, т.о. разработчикам Wine не придётся доделывать очень сложную работу по преобразованию вызовов OpenGL в вызовы Direct3D. Стоит отметить, что Direct3D 9 и его более ранние версии - это совершенно отличный API, и для его реализации потребуется полностью отличная реализация.

Третья цель - это предоставить альтернативу OpenGL для не Windows систем.

Благодаря очень продуманному дизайну и реализации с нуля, интерфейсы Direct3D 10 и 11 гораздо легче в использовании и реализации, чем API OpenGL, что легко можно заметить по количеству кода, которое требуется для реализации этих двух 3D систем. Также интерфейсы Direct3D 10 и 11 работают быстрее и надёжнее, чем OpenGL, за счёт гораздо меньшего объёма API-вызовов и разделению всей нетривиальной работы по созданию объектов, которую приложение должно выполнить заблаговременно.

Этот огромный патч для Mesa/Gallium включает в себя следующие вещи:

  • Независимо созданные заголовки для Direct3D 10, 10.1, 11 и DXGI 1.1, частично основанные на заголовках Wine для D3D10 и DXGI 1.0;
  • Обработчик Direct3D 10/11 DXBC и TokenizedProgramFormat (TPF);
  • Транслятор шейдеров из TokenizedProgramFormat в TGSI;
  • Реализация основных интерфейсов Direct3D 11;
  • Автоматически генерируемая реализация Direct3D 10 и 10.1;
  • Реализация DXGI, используя нативный фреймворк EGL st;
  • Несколько демо программ.

©  OpenNet