Proiectul Wine a publicat versiunea pachetului vkd3d 1.5 cu implementarea Direct3D 12 care funcționează prin traducerea apelurilor în API-ul grafic Vulkan. Pachetul include bibliotecile libvkd3d cu implementarea Direct3D 12, libvkd3d-shader cu translatorul pentru modelele de shader 4 și 5 și libvkd3d-utils cu funcții pentru simplificarea portării aplicațiilor Direct3D 12, precum și un set de exemple demo, inclusiv portul glxgears pe Direct3D 12. Codul proiectului este distribuit sub licența LGPLv2.1.
Biblioteca libvkd3d susține majoritatea funcționalităților Direct3D 12, inclusiv instrumentele pentru grafică și calcul, cozi și liste de comenzi, descrieri și descrieri de stivă, semnături rădăcină, acces nestructurat, Samplere, semnături de comenzi, constante rădăcină, redare indirectă, metode Clear*() și Copy*().
În libvkd3d-shader este implementată traducerea bytecode-ului pentru modelele de shader 4 și 5 în reprezentarea intermediară SPIR-V. Sunt acceptate shader-ele de vârf, pixel, tesselare, calcul și geometrice simple, serializarea și deserializarea semnăturii rădăcină. Din instrucțiunile shader-ului sunt implementate operații aritmetice, atomice și bitwise, operatori de comparare și control al fluxului de date, instrucțiuni sample, gather și load, operații de acces nestructurat (UAV, Unordered Access View).
În noua versiune:
- Au fost aduse numeroase îmbunătățiri compilatorului de shader-e în limba HLSL (High-Level Shader Language), disponibil începând cu DirectX 9.0. Printre acestea se numără îmbunătățirea suportului pentru tipurile de obiecte HLSL precum Texture2D în structuri și matrice, suportul pentru funcțiile încorporate dot(), ldexp() și lerp(), pentru modelele de shader 4 și 5 a fost adăugat suportul pentru operatorii logici „and”, „or” și „not”, precum și posibilitatea de a efectua conversii pentru tipurile booleene.
- A fost implementată opțiunea VKD3D_SHADER_COMPILE_OPTION_TYPED_UAV pentru încărcarea vederii de acces nestructurat (UAV) pentru formatele SPIR-V multicomponente (DXGI_FORMAT).
Sursa: opennet.ro
