vkd3d 1.2 включает улучшения совместимости, затенение и многое другое.

Проект Wine выпустил новую версию пакета vkd3d 1.2 с реализацией Direct3D 12 , которая работает путем преобразования вызовов к графическому API Vulkan.

Новая версия vkd3d 1.2 содержит несколько улучшений, но главными из них являются доступность библиотеки libvkd3d-shader в качестве общедоступной , поддержка шейдеров тесселяции, а также поддержка потокового вывода.

В пакет входят библиотека libvkd3d с реализациями Direct3D 12, библиотека libvkd3d-shader с транслятором шейдеров моделей 4 и 5, а также библиотека libvkd3d-utils с функциями для упрощения миграции приложений Direct3D 12, а также набор демонстрационных примеров, включая порт glxgears на Direct3D 12. Код проекта распространяется под лицензией LGPLv2.1.

Библиотека libvkd3d поддерживает большинство функций Direct3D 12, включая графические и вычислительные функции, списки команд и очереди, дескрипторы и дескрипторы кучи, сигнатуры корневых элементов, неупорядоченный доступ, сэмплеры, сигнатуры команд, константы корневых элементов, непрямой рендеринг и т. д.

Libvkd3d-shader реализует преобразование байт-кода 4 и 5 моделей шейдеров в промежуточное представление SPIR-V. Поддерживаются шейдеры для работы с вершинами, пикселями, тесселяцией, простой и вычислительной геометрией, сериализация и десериализация корневой сигнатуры.

В состав шейдерных инструкций входят арифметические, атомарные и побитовые операции, операторы управления потоком данных и сравнения, инструкции выборки, сбора и загрузки, а также операции неупорядоченного доступа (UAV, Unordered Access View).

На данном этапе разработки реализованы не все вызовы Direct3D 12 , и тестирование проводилось в основном на наборе демонстрационных приложений. В этот релиз не включены разрабатываемые функции, такие как поддержка тесселяции и сложных геометрических шейдеров, а также ряд улучшений, связанных с шейдерами и основными методами Direct3D 12. Эти функции будут предложены в будущем релизе.

Основные новые возможности Vkd3d 1.2

Одним из наиболее важных изменений в новой версии является доступность библиотеки libvkd3d-shader для использования в сторонних проектах, поскольку в нее добавлены несколько функций Direct3D 12, таких как:

  • Множественная выборка.
  • Зарезервированные ресурсы.
  • Скорость передачи данных экземпляра.
  • API «приватных данных» для всех интерфейсов.
  • Сопоставления компонентов представления ресурсов шейдера.
  • VK_KHR_draw_indirect_count расширение.
  • Предикат / условное представление.
  • Рендеринг глубины без пиксельного шейдера.
  • Вырез по глубине. Для этого требуется расширение VK_EXT_depth_clip_enable.
  • Откажитесь от растеризатора.
  • Смешивание с двумя источниками.
  • Отображение размещенных ресурсов.
  • Методы ReadFromSubresource () и WriteToSubresource () ID3D12Resource.
  • Одновременный доступ к ресурсам с несколькими очередями.
  • Нулевые просмотры. То есть представления без базового ресурса.
  • Еще несколько запросов в службу поддержки.

Помимо этого, следует отметить добавленную поддержку преобразования, сериализации и десериализации корневых подписей (vkd3d_serialize_versioned_root_signature() и vkd3d_create_versioned_root_signature_deserializer()) , а также поддержку потокового вывода.

Еще одно заметное изменение — это реализация переменных окружения: VKD3D_CONFIG для установки параметров, изменяющих поведение libvkd3d, и VKD3D_VULKAN_DEVICE для переопределения устройства для API Vulkan.

Кроме того, была добавлена ​​поддержка инструкций затенения bufinfo, eval_centroid, eval_sample_index, ld2ms, sample_b, sample_d, sample_info, samplepos, а также предварительная поддержка шейдеров модели 5.1.

А также поддержка целевых сред OpenGL SPIR-V. Это позволяет использовать SPIR-V, созданный libvkd3d-shader, с GL_ARB_gl_spirv. Это включает поддержку атомных счетчиков OpenGL и комбинированных семплеров.

Наконец, если вы хотите узнать больше об этой новой версии, вы можете ознакомиться с полным списком изменений по следующей ссылке.

Как установить vkd3d на Linux?

Тем, кто заинтересован в возможности установить vkd3d в своей системе, следует получить исходный код и продолжить компиляцию, хотя для практических целей или для новичков они могут попробовать эту библиотеку без особых усилий. Для этого им нужно только установить lutris и его конфигурации.

Что касается тех, кто заинтересован в компиляции, они должны получить код с:

git clone git://source.winehq.org/git/vkd3d.git/
./autogen.sh
./configure
make
../vkd3d/configure --build=i686-pc-linux-gnu "CPPFLAGS=-m32" "LDFLAGS=-m32"

Наконец, необходимо включить слои Vulkan:

export VK_INSTANCE_LAYERS=VK_LAYER_LUNARG_standard_validation
VKD3D_CONFIG=vk_debug


Добавить в качестве предпочтительного источника в Google