Il progetto Wine ha rilasciato Vkd3d 1.3 con l'implementazione di Direct3D 12

Dopo un anno e mezzo di sviluppo, il progetto Wine ha pubblicato il rilascio del pacchetto vkd3d 1.3 con un'implementazione Direct3D 12 che funziona tramite chiamate broadcast all'API grafica Vulkan. Il pacchetto include le librerie libvkd3d con implementazioni di Direct3D 12, libvkd3d-shader con un traduttore dei modelli shader 4 e 5 e libvkd3d-utils con funzioni per semplificare il porting delle applicazioni Direct3D 12, nonché una serie di esempi demo, incluso un port di glxgears su Direct3D 12. Il codice del progetto è distribuito con licenza LGPLv2.1.

La libreria libvkd3d supporta la maggior parte delle funzionalità di Direct3D 12, incluse funzionalità grafiche e di calcolo, code ed elenchi di comandi, handle e handle di heap, firme root, accesso fuori ordine, campionatori, firme di comandi, costanti root, rendering indiretto, metodi Clear *( ) e Copia*().

In libvkd3d-shader è implementata la traduzione del bytecode dei modelli shader 4 e 5 in una rappresentazione SPIR-V intermedia. Sono supportati vertici, pixel, tassellatura, calcolo e shader di geometria semplice, serializzazione e deserializzazione della firma radice. Le istruzioni shader includono operazioni aritmetiche, atomiche e di bit, operatori di confronto e di controllo del flusso di dati, istruzioni di campionamento, raccolta e caricamento, operazioni di accesso non ordinato (UAV, Unordered Access View).

Tra le innovazioni più significative di Vkd3d 1.3 ci sono:

  • Aggiunto il supporto iniziale per la compilazione e la preelaborazione degli shader in HLSL (High-Level Shader Language), fornito a partire da DirectX 9.0.
  • Aggiunto supporto per array di descrittori definiti nel modello shader 5.1.
  • Fornisce supporto per operazioni a virgola mobile a doppia precisione negli shader, indirizzamento indiretto per shader di tassellatura, esportazione di stencil dagli shader, un modificatore di shader "preciso" e barriere globali alle risorse di memoria.
  • È stata implementata la possibilità di disassemblare gli shader Direct3D dal bytecode alla rappresentazione dell'assembly.
  • Aggiunto il supporto per l'analisi del vecchio formato bytecode Direct3D utilizzato nei modelli shader Direct3D 1, 2 e 3.
  • libvkd3d aggiunge funzionalità Direct3D 12 come firme root, contatori di visualizzazioni fuori ordine, operatori di unione logica per l'output e modalità di indirizzamento delle texture mirror_once. Aggiunta la struttura vkd3d_host_time_domain_info.

Fonte: opennet.ru

Aggiungi un commento