Proiectul Wine a lansat Vkd3d 1.2 cu implementarea Direct3D 12

Proiectul Vinului a publicat eliberarea pachetului vkd3d 1.2 cu o implementare Direct3D 12 care funcționează prin difuzarea apelurilor către API-ul grafic Vulkan. Pachetul include biblioteci libvkd3d cu implementări ale Direct3D 12, libvkd3d-shader cu un translator al modelelor shader 4 și 5 și libvkd3d-utils cu funcții pentru simplificarea portarii aplicațiilor Direct3D 12, precum și un set de exemple demo, inclusiv un port de glxgears la Direct3D 12. Cod proiect distribuit de licențiat conform LGPLv2.1.

biblioteca libvkd3d suporturi Cele mai multe dintre caracteristicile Direct3D 12, inclusiv facilități de grafică și de calcul, cozi și liste de comenzi, mânere și mânere de heap, semnături rădăcină, acces în afara ordinii, Samplere, semnături de comandă, constante rădăcină, randare indirectă, metode Clear*() și Copiere*().

libvkd3d-shader implementează traducerea bytecode 4 și 5 ale modelelor shader într-o reprezentare intermediară a SPIR-V. Suportă vertex, pixel, tesselation, calcul și umbrire geometrie simplă, serializare și deserializare semnături rădăcină. Operații aritmetice, atomice și pe biți, operatorii de comparare și control al fluxului de date, instrucțiuni de eșantionare, colectare și încărcare, operațiuni de acces neordonat (UAV, Unordered Access View) sunt implementate din instrucțiunile shader.

Printre cele mai semnificative inovații în Vkd3d 1.2 sunt evidențiate următoarele:

  • Biblioteca libvkd3d-shader este gata de utilizare în proiecte terță parte.
  • Suport pentru shader tesselation.
  • Suport pentru conversia, serializarea și deserializarea semnăturilor rădăcină (vkd3d_serialize_versioned_root_signature() și vkd3d_create_versioned_root_signature_deserializer()).
  • Suport pentru ieșire în flux.
  • Implementarea multor funcții Direct3D 12 indisponibile anterior, inclusiv suport pentru eșantionare multiplă, rezervare de resurse,
    randare indirectă indexată, randare în profunzime fără pixel shaders, acces simultan la resurse din diferite cozi de comandă, vizualizări nule.

  • S-au adăugat variabile de mediu: VKD3D_CONFIG pentru a seta opțiuni pentru a modifica comportamentul libvkd3d și VKD3D_VULKAN_DEVICE pentru a suprascrie dispozitivul pentru API-ul Vulkan.
  • S-a adăugat suport pentru instrucțiunile bufinfo shader,
    eval_centroid,
    eval_sample_index,
    ld2ms,
    sample_b,
    sample_d,
    sample_info,
    samplepos.

Sursa: opennet.ru

Adauga un comentariu