Проект Wine представил первый стабильный выпуск библиотеки Vkd3d 1.0 - транслятора из API DirectX 12 в Vulkan. Проект нацелен на запуск существующих D3D 12 тайтлов с минимальными потерями в производительности, а также на облегчение в их портировании. В качестве примеров работы библиотеки предлагаются «Hello Triangle» и порт glxgears на Direct3D 12. Vkd3d поддерживает множество функций Direct3D 12:
- Средства для вывода графики и выполнения вычислений;
- Списки команд, распределители команд и очереди команд;
- Дескрипторы и дескрипторы кучи;
- Корневые подписи;
- Константные буферы, шейдерные ресурсы, неупорядоченный доступ;
- Сэмплеры, включая статичные;
- Копирование дескрипторов;
- Собственные ресурсы;
- Корневые константы;
- Барьеры ресурсов;
- Запросы, в том числе запросы кучи;
- Различные методы Clear*() и Copy*();
- Базовую поддержку непрямого вывода и подписей команд.
Помимо этого предоставляется транслятор байткода 4 и 5 моделей шейдеров в промежуточное представление SPIR-V - libvkd3d-shader. Пока в качестве встроенной библиотеки, но в будущем планируется создать публичный API, а также обеспечить поддержку Shader Model 5.1. В будущих выпусках Vkd3d разработчики планируют реализовать поддержку вычислений сложных геометрических и тесселяционных шейдеров, а также улучшить базовые методы DirectX 12.
>>> Подробности