Проект Wine опубликовал выпуск
пакета vkd3d 1.4 с
реализацией 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).
В новой
версии:
- Внесены многочисленные улучшения в компилятор шейдеров на языке
HLSL (High-Level Shader
Language), предоставляемом начиная с DirectX 9.0. - Предложена новая реализация кучи
дескрипторов
(Descriptor Heap), использующая Vulkan-расширение
VK_EXT_descriptor_indexing. - Добавлена новая реализация
границ
(fence), основанная на Vulkan-расширении VK_KHR_timeline_semaphore.
// cc-by opennet.ru
// converted with crypt’s opennet autoreposter
>>> Подробности