Проектът Wine пусна Vkd3d 1.3 с реализация на Direct3D 12

След година и половина разработка, проект Wine публикува версия на пакета vkd3d 1.3 с реализация на Direct3D 12, работеща чрез транслация на повиките в графичния API Vulkan. Пакетът включва библиотеките libvkd3d с реализация на Direct3D 12, libvkd3d-shader с транслатор за шейдъри на модел 4 и 5 и libvkd3d-utils с функции за опростяване на портироването на приложения с Direct3D 12, както и набор от демонстрационни примери, включващи порта glxgears на Direct3D 12. Кодът на проекта се разпространява под лиценз LGPLv2.1.

Библиотеката libvkd3d поддържа по-голямата част от възможностите на Direct3D 12, включително средства за графика и изчисления, опашки и команди, дескриптори и купчини, коренови подписания, неупорядочен достъп, Sampler-и, командни сигнатури, коренови константи, непряка (indirect) рендеринг, методи Clear*() и Copy*().

В libvkd3d-shader е реализирана транслация на байт-кода на 4 и 5 модели на шейдъри в междинно представяне SPIR-V. Поддържат се върхови, пикселни, тесселационни, изчислителни и простични геометрични шейдъри, сериализация и десериализация на коренови подписи. От шейдерните инструкции са реализирани аритметични, атомарни и битови операции, оператори за сравнение и управление на потока на предаване на данни, инструкции sample, gather и load, операции на неупорядочен достъп (UAV, Unordered Access View).

Сред най-значителните нововъведения в Vkd3d 1.3 се отличават:

  • Добавена е начална поддръжка за компилация и предпроцесинг на шейдъри на HLSL (High-Level Shader Language), предоставен от DirectX 9.0.
  • Добавена е поддръжка на масиви от дескриптори, определени в моделите на шейдъри 5.1.
  • Осигурена е поддръжка за операции с двойна точност с плаваща запетая в шейдърите, непряка адресация за тесселационни шейдъри, експортиране на шаблони от шейдъри, модификатор на шейдъри „precise“ и глобални бариери за ресурси в паметта.
  • Реализирана е възможност за дизасемблиране на шейдъри Direct3D от байткод в асемблерно представяне.
  • Добавена е поддръжка за разбиране на стария формат байткод на Direct3D, използван в моделите на шейдъри Direct3D 1, 2 и 3.
  • В libvkd3d са добавени възможности на Direct3D 12, като коренови подписания, броячи на прегледи с неупорядочен достъп, логически оператори за сливане на изхода, режим на адресация на текстури mirror_once. Добавена е структура vkd3d_host_time_domain_info.

Източник: opennet.ru

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster