Проект Wine опубликовал Vkd3d 1.13 с реализацией Direct3D 12
Проект Wine опубликовал выпуск пакета vkd3d 1.13 с реализацией 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 реализована трансляция байткода моделей шейдеров в промежуточное представление SPIR-V. Поддерживаются вершинные, пиксельные, тесселяционные, вычислительные и простые геометрические шейдеры, сериализация и десериализация корневой сигнатуры. Из шейдерных инструкций реализованы арифметические, атомарные и битовые операции, операторы сравнения и управления потоком передачи данных, инструкции sample, gather и load, операции неупорядоченного доступа (UAV, Unordered Access View).
В новой версии:
В компилятор HLSL добавлена поддержка разворачивания циклов (loop unrolling, оптимизация, при которой для более эффективного использования процессорного кэша и сокращения ветвления цикличные операции заменяется на несколько идущих друг за другом копий кода).
Добавлена поддержка компилятора эффектов для некоторых объектов состояния четвёртой модели шейдеров.
Обеспечена поддержка типов четвёртой модели шейдеров BlendState, ComputeShader, DomainShader, GeometryShader, HullShader, DepthStencilState и RasterizerState, а также функций OMSetRenderTargets () SetBlendState (), SetComputeShader (), SetDomainShader (), SetGeometryShader (), SetHullShader (), SetPixelShader (), SetVertexShader () SetDepthStencilState () и SetRasterizerState ().
В компиляторе шейдеров реализована поддержка разбора и хранения в различных форматах значений инициализации для глобальных переменных, параметров функций и аннотаций.
- Добавлена поддержка регистрового пространства шейдерной модели 5.1.
Реализованы встроенные функции tex1D (), tex2D (), tex3D (), texCUBE (), asint (), f16tof32(), faceforward (), GetRenderTargetSampleCount (), rcp (), tex2Dbias (), tex1Dgrad (), tex2Dgrad (), tex3Dgrad () и texCUBEgrad ().
В libvkd3d добавлен интерфейс ID3D12CommandList6 и реализована возможность создания текстур, сжатие которых осуществляется на уровне отдельных блоков (например, отдельно сжимаются блоки, размером 4×4 пикселя).
Добавлена поддержка структуры vkd3d_shader_parameter_info и параметров VKD3D_SHADER_PARAMETER_DATA_TYPE_FLOAT32, VKD3D_SHADER_PARAMETER_NAME_ALPHA_TEST_FUNC, VKD3D_SHADER_PARAMETER_NAME_ALPHA_TEST_REF, VKD3D_SHADER_PARAMETER_NAME_FLAT_INTERPOLATION и VKD3D_SHADER_PARAMETER_TYPE_BUFFER.
Источник: http://www.opennet.ru/opennews/art.shtml? num=61786
© OpenNet