Проект Wine публикува версия на пакета vkd3d 1.5 с реализация на 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).
В новата версия:
- Внесени са многобройни подобрения в компилатора на шейдери на HLSL (High-Level Shader Language), предоставен от DirectX 9.0 насам. Включително в структурата и масивите е подобрена поддръжката на обектни типове HLSL, като Texture2D, добавена е поддръжка на вградени функции dot(), ldexp() и lerp(), за модели на шейдери 4 и 5 е добавена поддръжка на логически оператори «and», «or» и «not», а също и възможност за преобразуване на булеви типове.
- Реализирана е опция VKD3D_SHADER_COMPILE_OPTION_TYPED_UAV за зареждане на неупорядочено представяне на достъп (UAV) за многокомпонентни формати SPIR-V (DXGI_FORMAT).
Източник: opennet.ru
