Проект Wine представи Vkd3d 1.2 с реализация на Direct3D 12

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

Библиотеката libvkd3d поддържа покрива голяма част от възможностите на Direct3D 12, включително средства за графика и изчисления, опашки и списъци с команди, дескриптори и дескриптори на купчините, коренови подписи, неупорядочен достъп, семплери, сигнатури на команди, коренови константи, непряка (indirect) отрисовка, методи Clear*() и Copy*().

В libvkd3d-shader е реализирана транслация на байт-кода на 4 и 5 модели на шейдъри в междинно представяне SPIR-V. Поддържат се върхови, пикселни, тесселационни, изчислителни и простични геометрични шейдъри, сериализация и десериализация на коренови подписи. От шейдерните инструкции са реализирани аритметични, атомарни и битови операции, оператори за сравнение и управление на потока на предаване на данни, инструкции sample, gather и load, операции на неупорядочен достъп (UAV, Unordered Access View).

Сред най-забележителните нововъведения в Vkd3d 1.2 се открояват:

  • Готовността на библиотеката libvkd3d-shader за използване в трети проекти.
  • Поддръжка на тесселационни шейдъри.
  • Поддръжка за преобразуване, сериализация и десериализация на коренови сигнатури (vkd3d_serialize_versioned_root_signature() и vkd3d_create_versioned_root_signature_deserializer()).
  • Поддръжка на потоково излъчване.
  • Реализация на много от преди недостъпните възможности на Direct3D 12, включително поддръжка на мултисемплинг, резервиране на ресурси,
    косвена индексирана отрисовка, рендеринг на дълбочина без пикселни шейдъри, едновременен достъп до ресурси от различни опашки с команди, нулеви представяния (Null-views).
  • Добавени променливи на средата: VKD3D_CONFIG за задаване на опции за промяна на поведението на libvkd3d и VKD3D_VULKAN_DEVICE за презаписване на устройството за API Vulkan.
  • Добавена поддръжка на шейдерни инструкции bufinfo,
    eval_centroid,
    eval_sample_index,
    ld2ms,
    sample_b,
    sample_d,
    sample_info,
    samplepos.

Източник: opennet.ru

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster