Proiectul Wine a publicat Vkd3d 1.16 cu implementarea Direct3D 12

Proiectul Wine a publicat versiunea pachetului vkd3d 1.16, care implementează Direct3D 12, funcționând prin translatia apelurilor în API-ul grafic Vulkan. Pachetul include bibliotecile libvkd3d cu implementarea Direct3D 12, libvkd3d-shader cu un translator pentru modele de șader 4 și 5, și libvkd3d-utils cu funcții pentru simplificarea portării aplicațiilor Direct3D 12, precum și un set de exemple demonstrative, inclusiv portul glxgears pe Direct3D 12. Codul proiectului este distribuit sub licența LGPLv2.1.

Biblioteca libvkd3d suportă majoritatea funcțiilor Direct3D 12, inclusiv instrumente pentru grafică și calcul, cozi și liste de comenzi, descrieri și descrieri de grămadă, semnături de rădăcină, acces neordonat, Sampler-e, semnături de comenzi, constante de rădăcină, desenare indirectă, metode Clear*() și Copy*(). În libvkd3d-shader este implementată translatia codului binar al modelelor de șader în reprezentare intermediară SPIR-V. Sunt suportate șaderi de vârf, pixel, teselare, calcul și șaderi geometrice simple, serializare și deserializare a semnăturii de rădăcină. Instrucțiunile de șader includ operații aritmetice, atomice și bitwise, operatori de comparație și control al fluxului de date, instrucțiuni de sample, gather și load, operații de acces neordonat (UAV, Unordered Access View).

În noua versiune:

  • A fost stabilizată și inclusă în mod implicit suportul pentru șaderi DXIL (DirectX Intermediate Language).
  • Compilatorul limbajului de șaderi HLSL a adăugat suport inițial pentru șaderii geometrice. Suportul pentru modelele de șader 1, 2, 3 include adresarea indirectă, module și constrângerea valorilor.
  • Biblioteca libvkd3d anunță suportul pentru modelul de șader 6.0. În interfața ID3D12Device1 a fost implementată metoda SetEventOnMultipleFenceCompletion(). A fost adăugat suport pentru extensia Vulkan VK_KHR_zero_initialize_workgroup_memory pentru inițializarea cu zero a memoriei pentru șaderi. Extensia Vulkan VK_KHR_maintenance2, propusă în specificația Vulkan 1.1, a fost inclusă ca obligatorie.
  • A fost adăugat suport pentru disasmblarea șaderilor SPIR-V și efectele binare „fx_2_0”.
  • A fost adăugat suport experimental pentru adresarea indirectă a bufferelor constante în GLSL (OpenGL Shading Language).
  • În implementarea limbajului de șaderi MSL (Metal Shading Language), utilizat de compania Apple în API-ul grafic Metal, a fost adăugată capacitatea de a încărca texturi.
  • Suport pentru funcțiile încorporate HLSL a fost adăugat: AllMemoryBarrier(), AllMemoryBarrierWithGroupSync(), DeviceMemoryBarrier(), DeviceMemoryBarrierWithGroupSync(), GroupMemoryBarrier() și GroupMemoryBarrierWithGroupSync().
  • Au fost implementate flagurile VKD3D_SHADER_COMPILE_OPTION_FEATURE_ZERO_INITIALIZE_WORKGROUP_MEMORY, VKD3D_SHADER_COMPONENT_INT64, VKD3D_SHADER_COMPONENT_FLOAT16, VKD3D_SHADER_COMPONENT_UINT16, VKD3D_SHADER_COMPONENT_INT16, VKD3D_SHADER_RESOURCE_DATA_NONE și VKD3D_SHADER_RESOURCE_DATA_UINT.

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