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

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

Вторая очень важная цель - это реализовать поддержку DirectX 10/11 игр в Linux. Wine в настоящее время поддерживает лишь очень небольшую часть вызовов Direct3D 10 и вообще не поддерживает Direct3D 11, таким образом разработчикам 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;
  • Несколько демонстрационных программ.


Источник: http://www.opennet.ru/opennews/art.shtml?num=28035