Пасля паўтары гадоў распрацоўкі праект Wine апублікаваў выпуск пакета vkd3d 1.3 з рэалізацыяй Direct3D 12, якая працуе праз трансляцыю выклікаў у графічны API Vulkan. У склад пакета ўваходзяць бібліятэкі libvkd3d з рэалізацый Direct3D 12, libvkd3d-shader c транслятарам 4 і 5 мадэлі шэйдараў і libvkd3d-utils з функцыямі для спрашчэння партавання прыкладанняў Direct3D 12, а таксама набор дэманстрацыйных прыкладаў, уключаючы порт. пад ліцэнзіяй LGPLv3.
Бібліятэка libvkd3d падтрымлівае большую частку магчымасцяў Direct3D 12, уключаючы сродкі для графікі і вылічэнняў, чэргі і спісы каманд, дэскрыптары і дэскрыптары кучы, каранёвыя подпісы, неўпарадкаваны доступ, Sampler-ы, сігнатуры каманд, каранёвыя канстанты, непрамую *() і Copy*().
У libvkd3d-shader рэалізавана трансляцыя байткода 4 і 5 мадэляў шэйдараў у прамежкавае паданне SPIR-V. Падтрымліваюцца вяршынныя, піксельныя, тесселяционные, вылічальныя і простыя геаметрычныя шэйдары, серыялізацыя і дэсерыялізацыя каранёвага подпісу. З шэйдарных інструкцый рэалізаваны арыфметычныя, атамарныя і бітавыя аперацыі, аператары параўнання і кіравання струменем перадачы дадзеных, інструкцыі sample, gather і load, аперацыі неўпарадкаванага доступу (UAV, Unordered Access View).
Сярод найболей значных навін у Vkd3d 1.3 вылучаюцца:
- Дададзеная пачатковая падтрымка кампіляцыі і прэпрацэсінгу шэйдараў на мове HLSL (High-Level Shader Language), які прадастаўляецца пачынаючы з DirectX 9.0.
- Дададзена падтрымка масіваў дэскрыптараў, вызначаных у мадэлі шэйдараў 5.1.
- Забяспечана падтрымка аперацый з лікамі з якая плавае коскі падвойнай дакладнасці ў шэйдарах, непрамы адрасацыі для тесселяционных шэйдараў, экспарту трафарэтаў з шэйдараў, мадыфікатара шэйдараў «precise» і глабальных бар'ераў для рэсурсаў у памяці.
- Рэалізавана магчымасць дызасэмблявання шэйдараў Direct3D з байткода ў асэмблерны паказ.
- Дададзена падтрымка разбору старога фармату байткода Direct3D, які ўжываецца ў мадэлях шэйдараў Direct3D 1, 2 і 3.
- У libvkd3d дададзены такія магчымасці Direct3D 12, як каранёвыя сігнатуры, лічыльнікі прагляду з неўпарадкаваным доступам, лагічныя аператары зліцця для высновы, рэжым адрасавання тэкстур mirror_once. Дададзена структура vkd3d_host_time_domain_info.
Крыніца: opennet.ru