Проект Wine выпустил Vkd3d 1.0 с реализацией Direct3D 12
Как сообщает opennet.ru проект Wine представил первый релиз пакета vkd3d, предоставляющего реализацию Direct3D 12, работающую через трансляцию вызовов в API Vulkan. В состав пакета входят библиотеки libvkd3d с реализаций Direct3D 12, libvkd3d-shader c транслятором 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).
На текущем этапе развития не все вызовы Direct3D 12 реализованы, а тестирование в основном осуществлялось на наборе демонстрационных приложений. В выпуск не вошли такие находящиеся в разработке возможности как поддержка тесселяционных и сложных геометрических шейдеров, а также ряд улучшений, связанных с шейдерами и базовыми методами Direct3D 12. Данные возможности будут предложены в одной из следующих версий.
Дополнительно можно отметить выпуск проекта DXVK 0.52, нацеленного на создание реализации DXGI и Direct3D 11 поверх API Vulkan для предоставления возможности запуска 3D-приложений в Linux при помощи Wine. После доведения проекта до полнофункционального состояния, DXVK сможет использоваться в качестве основанной на Vulkan альтернативы для предоставляемой в Wine реализации D3D11, работающей поверх OpenGL. В новой версии представлена начальная поддержка DXGI 1.2 и оптимизирован рендеринг отложенных контекстов (Deferred Contexts). Указанные изменения позволили избавиться от крахов при запуске игр Bioshock 2 Remastered и Frostpunk, а также значительно повысить производительность игры Diablo 3.