Il progetto Wine ha pubblicato la versione del pacchetto vkd3d 1.17 con l'implementazione di Direct3D 12, che funziona tramite la traduzione delle chiamate nell'API grafica Vulkan. Il pacchetto include le librerie libvkd3d con l'implementazione di Direct3D 12, libvkd3d-shader con il traduttore dei modelli di shader di versione 4 e 5 e libvkd3d-utils con funzioni per semplificare il porting delle applicazioni Direct3D 12, oltre a una serie di esempi dimostrativi, inclusa la portazione di glxgears su Direct3D 12. Il codice del progetto è distribuito sotto la licenza LGPLv2.1.
La libreria libvkd3d supporta gran parte delle funzionalità di Direct3D 12, inclusi gli strumenti per la grafica e il calcolo, code e liste di comandi, descrittori e descrittori di heap, firme radice, accesso non ordinato, Sampler, firme di comando, costanti radice, rendering indiretto, metodi Clear*() e Copy*(). In libvkd3d-shader è stata implementata la traduzione del bytecode dei modelli di shader in rappresentazione intermedia SPIR-V. Sono supportati shader di vertici, pixel, tessellazione, calcolo e shader geometrici semplici, serializzazione e deserializzazione delle firme radice. Tra le istruzioni per shader sono state implementate operazioni aritmetiche, atomiche e bitwise, operatori di confronto e di controllo del flusso di dati, istruzioni sample, gather e load, operazioni di accesso non ordinato (UAV, Unordered Access View).
Nella nuova versione:
- L'implementazione del linguaggio degli shader HLSL ha aggiunto un supporto iniziale per la memoria condivisa dei gruppi di thread, ampliato il supporto per gli shader geometrici e aggiunto un parser per le risorse StructuredBuffer.
- È proseguito lo sviluppo dell'implementazione del linguaggio degli shader MSL (Metal Shading Language), utilizzato da Apple nell'API grafica Metal. Ad esempio, in MSL è stato aggiunto il supporto per cicli, indirizzamento indiretto dei buffer costanti, campionamento delle texture e varie operazioni di aritmetica intera e confronto.
- Nella libreria libvkd3d è stato aggiunto il metodo EnumerateMetaCommands() nell'implementazione dell'interfaccia ID3D12Device5.
- È stato aggiunto un nuovo tipo di shader "tx" (VKD3D_SHADER_SOURCE_TX), utilizzato per il caricamento degli shader di elaborazione texture.
Fonte: opennet.ru
