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

Progetto Vino pubblicato rilascio del pacchetto vkd3d 1.2 Con un'implementazione Direct3D 12 che funziona tramite la traduzione delle chiamate all'API grafica Vulkan. Il pacchetto include le librerie libvkd3d con implementazioni Direct3D 12, libvkd3d-shader con un traduttore per i modelli shader 4 e 5 e libvkd3d-utils con funzioni per semplificare il porting di applicazioni Direct3D 12, oltre a una serie di esempi demo, tra cui un porting di glxgears su Direct3D 12. Codice del progetto distribuito da concesso in licenza sotto LGPLv2.1.

libreria libvkd3d поддерживает la maggior parte delle funzionalità di Direct3D 12, tra cui funzionalità grafiche e di elaborazione, code e liste di comandi, descrittori e descrittori di heap, firme di root, accesso non ordinato, campionatori, firme di comando, costanti di root, rendering indiretto, metodi Clear*() e Copy*().

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 i più significativi innovazioni In Vkd3d 1.2 sono evidenziati i seguenti aspetti:

  • La libreria libvkd3d-shader è pronta per essere utilizzata in progetti di terze parti.
  • Supporto per shader di tassellazione.
  • Supporto per la conversione, la serializzazione e la deserializzazione della firma root (vkd3d_serialize_versioned_root_signature() e vkd3d_create_versioned_root_signature_deserializer()).
  • Supporto per l'output in streaming.
  • Implementazione di molte funzionalità Direct3D 12 precedentemente non disponibili, tra cui il supporto per il multicampionamento, la prenotazione delle risorse,
    rendering indicizzato indiretto, rendering di profondità senza pixel shader, accesso simultaneo alle risorse da diverse code di comandi, viste nulle.
  • Aggiunte variabili di ambiente: VKD3D_CONFIG per impostare le opzioni per modificare il comportamento di libvkd3d e VKD3D_VULKAN_DEVICE per sovrascrivere il dispositivo per l'API Vulkan.
  • Aggiunto supporto per le istruzioni dello shader bufinfo,
    eval_centroid,
    indice_campione_di_valutazione,
    ld2ms,
    campione_b,
    campione_d,
    informazioni_di_esempio,
    samplepos.

Fonte: opennet.ru