Progetto Wine rilascio del pacchetto con l'implementazione di Direct3D 12 che funziona tramite la traslazione delle chiamate nell'API grafica Vulkan. Il pacchetto include le librerie libvkd3d con l'implementazione di Direct3D 12, libvkd3d-shader con il traduttore per shader di modello 4 e 5 e libvkd3d-utils con funzioni per semplificare il porting delle applicazioni Direct3D 12, oltre a un insieme di esempi dimostrativi, incluso il port di glxgears su Direct3D 12. Codice del progetto è sotto licenza LGPLv2.1.
Libreria libvkd3d la maggior parte delle funzionalità di Direct3D 12, inclusi strumenti per grafica e calcolo, code e liste di comandi, descrittori e descrittori di heap, firme radice, accesso non ordinato, sampler, firme di comandi, costanti radice, rendering indiretto, metodi Clear*() e Copy*().
In libvkd3d-shader, the translation of bytecode for shader models 4 and 5 into the SPIR-V intermediate representation has been implemented. It supports vertex, pixel, tessellation, compute, and simple geometry shaders, as well as serialization and deserialization of the root signature. Arithmetic, atomic, and bitwise operations, comparison and control flow operators, sample, gather, and load instructions, and unordered access operations (UAV, Unordered Access View) are all implemented from the shader instructions.
Tra le novità più significative in Vkd3d 1.2 emergono:
- Prontezza della libreria libvkd3d-shader per l'uso in progetti di terze parti.
- Supporto per gli shader di tesselazione.
- Supporto per la serializzazione e deserializzazione delle firme radice (vkd3d_serialize_versioned_root_signature() e vkd3d_create_versioned_root_signature_deserializer()).
- Supporto per l'output streaming.
- Implementazione di molte funzionalità precedentemente inacessibili di Direct3D 12, inclusa la supporto per il multisampling, la riservazione delle risorse,
rendering indiretto indicizzato, rendering della profondità senza shader pixel, accesso simultaneo alle risorse di diverse code di comando, presentazioni nulle (Null-views). - Aggiunte variabili ambientali: VKD3D_CONFIG per impostare opzioni per modificare il comportamento di libvkd3d e VKD3D_VULKAN_DEVICE per sovrascrivere il dispositivo per l'API Vulkan.
- Supporto aggiunto per le istruzioni degli shader bufinfo,
eval_centroid,
eval_sample_index,
ld2ms,
sample_b,
sample_d,
sample_info,
samplepos.
Fonte: opennet.ru
