Проект 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, а також набір демонстраційних прикладів, включаючи порт 3Ds, порт. поширюється під ліцензією LGPLv2.1.

Бібліотека libvkd3d підтримує більшу частину можливостей Direct3D 12, включаючи засоби для графіки та обчислень, черги та списки команд, дескриптори та дескриптори купи, кореневі підписи, невпорядкований доступ, Sampler-и, сигнатури команд, кореневі константи, непряме (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

Додати коментар або відгук