vkd3d 1.2 vine cu îmbunătățiri de compatibilitate, umbrire și multe altele

Proiectul Wine a lansat o nouă versiune a pachetului vkd3d 1.2 cu o implementare Direct3D 12 care funcționează prin traducerea apelurilor către API-ul grafic Vulkan.

Această nouă versiune de vkd3d 1.2 conține mai multe îmbunătățiri, dar principalele care ies în evidență sunt disponibilitatea libvkd3d-shader ca bibliotecă publică , suportul pentru shadere de tessellation, precum și suportul pentru ieșirea în flux.

Pachetul include biblioteca libvkd3d cu implementări Direct3D 12, biblioteca libvkd3d-shader cu un traducător de shadere model 4 și 5 și biblioteca libvkd3d-utils cu funcții pentru simplificarea migrării aplicațiilor Direct3D 12, precum și un set de demonstrații, inclusiv portarea glxgears la Direct3D 12. Codul proiectului este distribuit sub licența LGPLv2.1.

Biblioteca libvkd3d acceptă majoritatea caracteristicilor Direct3D 12, inclusiv funcții grafice și de calcul, liste de comenzi și cozi, descriptori și descriptori heap, semnături rădăcină, acces neordonat, samplere, semnături de comandă, constante rădăcină, randare indirectă etc.

Libvkd3d-shader implementează traducerea bytecode-ului 4 și 5 al modelelor shader în reprezentarea intermediară SPIR-V. Sunt suportate vârfuri, pixeli, teselări, shadere geometrice simple și computaționale, serializarea semnăturii rădăcină și deserializarea.

Instrucțiunile shader includ operații aritmetice, atomice și bit cu bit, operatori de control și comparare a fluxului de date, instrucțiuni de eșantionare, colectare și încărcare și operații de acces neordonat (UAV, Unordered Access View).

În această etapă de dezvoltare, nu toate apelurile Direct3D 12 sunt implementate , iar testarea a fost efectuată în principal pe un set de aplicații demo. Această versiune nu include funcții în curs de dezvoltare, cum ar fi suportul pentru teselare și shadere cu geometrie complexă, precum și câteva îmbunătățiri legate de shadere și metodele de bază Direct3D 12. Aceste funcții vor fi oferite într-o versiune viitoare.

Principalele caracteristici noi ale Vkd3d 1.2

Una dintre cele mai importante schimbări din noua versiune este disponibilitatea bibliotecii libvkd3d-shader pentru utilizarea în proiecte terțe, deoarece au fost adăugate mai multe caracteristici Direct3D 12, cum ar fi:

  • Eșantionare multiplă.
  • Resurse rezervate.
  • Ratele de trecere a datelor de instanță.
  • API-ul „Date private” pentru toate interfețele.
  • Asocierea componentelor vizualizării resursei Shader.
  • Extensie VK_KHR_draw_indirect_count.
  • Reprezentare predicat / condițional.
  • Redarea adâncimii fără pixel shader.
  • Decupare adâncime. Aceasta necesită extensia VK_EXT_depth_clip_enable.
  • Aruncați rasterizatorul.
  • Amestecarea sursei duale.
  • Cartarea resurselor plasate.
  • ReadFromSubresource () și WriteToSubresource () ID3D12Resource metode.
  • Acces simultan la resurse cu mai multe cozi.
  • Vedere nulă. Adică vizualizări fără o resursă subiacentă.
  • Mai multe întrebări de asistență pentru funcții.

Pe lângă acestea, este demn de remarcat suportul suplimentar pentru conversia, serializarea și deserializarea semnăturilor rădăcină (vkd3d_serialize_versioned_root_signature() și vkd3d_create_versioned_root_signature_deserializer()) , precum și suportul pentru redarea în flux a ieșirii.

O altă modificare notabilă este implementarea variabilelor de mediu: VKD3D_CONFIG pentru a seta opțiunile de modificare a comportamentului libvkd3d și VKD3D_VULKAN_DEVICE pentru a suprascrie dispozitivul pentru API-ul Vulkan.

În plus, a fost adăugat suport pentru instrucțiunile de umbrire bufinfo, eval_centroid, eval_sample_index, ld2ms, sample_b, sample_d, sample_info, samplepos și suport preliminar pentru shaderele modelului 5.1.

Și, de asemenea, suport pentru mediile țintă OpenGL SPIR-V. Acest lucru permite ca SPIR-V produs de libvkd3d-shader să fie utilizat cu GL_ARB_gl_spirv. Aceasta include suport pentru contoare atomice OpenGL și samplere combinate.

În cele din urmă, dacă doriți să aflați mai multe despre această nouă versiune, puteți consulta lista completă a modificărilor la următorul link.

Cum se instalează vkd3d pe Linux?

Pentru cei care sunt interesați să poată instala vkd3d pe sistemul lor, aceștia ar trebui să obțină codul sursă și să continue compilarea, deși, în scopuri practice sau pentru cei începători, pot încerca această bibliotecă fără eforturi mari. Pentru aceasta, trebuie doar să instaleze lutris și în configurațiile sale.

Cât despre cei interesați de compilare, aceștia trebuie să obțină codul cu:

git clone git://source.winehq.org/git/vkd3d.git/
./autogen.sh
./configure
make
../vkd3d/configure --build=i686-pc-linux-gnu "CPPFLAGS=-m32" "LDFLAGS=-m32"

În cele din urmă, straturile Vulkan trebuie activate:

export VK_INSTANCE_LAYERS=VK_LAYER_LUNARG_standard_validation
VKD3D_CONFIG=vk_debug


Adăugați ca sursă preferată în Google