Proiectul Wine a publicat Vkd3d 1.13 cu implementarea Direct3D 12

Proiectul Wine a publicat o versiune a pachetului vkd3d 1.13, cu implementarea Direct3D 12, care funcționează prin translația apelurilor către API-ul grafic Vulkan. Pachetul include biblioteci libvkd3d cu implementări Direct3D 12, libvkd3d-shader cu translația shaderelor model 4 și 5, și libvkd3d-utils cu funcții pentru simplificarea portării aplicațiilor Direct3D 12, precum și un set de exemple demo, inclusiv portarea glxgears pe Direct3D 12. Codul proiectului este distribuit sub licența LGPLv2.1.

Biblioteca libvkd3d suportă majoritatea caracteristicilor Direct3D 12, inclusiv instrumente pentru grafică și calcul, cozi și liste de comenzi, descriere și descriere a unui heap, semnături rădăcină, acces nesortat, Sample-uri, semnături de comenzi, constante rădăcină, randare indirectă, metode Clear*() și Copy*(). În libvkd3d-shader este implementată translația bytecode-ului shaderelor la reprezentări intermediare SPIR-V. Se suportă shadere de vârf, pixel, tesselație, calcul, și shadere geometrice simple, serializarea și deserializarea semnăturii rădăcină. Din instrucțiunile shaderului sunt implementate operații aritmetice, atomice și bitwise, operatori de comparație și control al fluxului de date, instrucțiuni sample, gather și load, operații de acces nesortat (UAV, Unordered Access View).

În noua versiune:

  • Compilerul HLSL a adăugat suport pentru desfășurarea buclelor (loop unrolling, o optimizare prin care operațiile ciclice sunt înlocuite cu mai multe copii consecutive pentru a folosi mai eficient cache-ul procesorului și a reduce ramificația).
  • A fost adăugat suport pentru compilatorul de efecte pentru anumite obiecte de stare ale modelului 4 de shadere.
  • S-a asigurat suportul pentru tipurile BlendState, ComputeShader, DomainShader, GeometryShader, HullShader, DepthStencilState și RasterizerState pentru modelul 4 de shadere, precum și pentru funcțiile OMSetRenderTargets(), SetBlendState(), SetComputeShader(), SetDomainShader(), SetGeometryShader(), SetHullShader(), SetPixelShader(), SetVertexShader(), SetDepthStencilState() și SetRasterizerState().
  • În compilatorul de shadere este implementat suportul pentru analiza și stocarea valorilor de inițializare în diferite formate pentru variabile globale, parametrii funcțiilor și adnotări.
  • A fost adăugat suport pentru spațiile de registre ale modelului 5.1 de shadere.
  • Sunt implementate funcții încorporate tex1D(), tex2D(), tex3D(), texCUBE(), asint(), f16tof32(), faceforward(), GetRenderTargetSampleCount(), rcp(), tex2Dbias(), tex1Dgrad(), tex2Dgrad(), tex3Dgrad() și texCUBEgrad().
  • În libvkd3d a fost adăugat interfața ID3D12CommandList6 și implementată posibilitatea de a crea texturi a căror compresie se realizează la nivelul unor blocuri individuale (de exemplu, blocurile de 4×4 pixeli sunt comprimate separat).
  • A fost adăugată suportul pentru structura vkd3d_shader_parameter_info și parametrii VKD3D_SHADER_PARAMETER_DATA_TYPE_FLOAT32, VKD3D_SHADER_PARAMETER_NAME_ALPHA_TEST_FUNC, VKD3D_SHADER_PARAMETER_NAME_ALPHA_TEST_REF, VKD3D_SHADER_PARAMETER_NAME_FLAT_INTERPOLATION și VKD3D_SHADER_PARAMETER_TYPE_BUFFER.

Sursa: opennet.ro

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster