Wine-projektet har offentliggjort en udgave af pakken vkd3d 1.14 med implementering af Direct3D 12, der fungerer via oversættelse af kald til grafik-API'en Vulkan. Pakken indeholder bibliotekerne libvkd3d med implementering af Direct3D 12, libvkd3d-shader med oversætter til shader-modeller 4 og 5, samt libvkd3d-utils med funktioner til at lette porting af Direct3D 12-applikationer, samt et sæt demonstrations eksempler, inklusive porteringen af glxgears til Direct3D 12. Projektkoden distribueres under LGPLv2.1-licensen.
Biblioteket libvkd3d understøtter størstedelen af funktionerne i Direct3D 12, herunder værktøjer til grafik og computation, køer og kommandolister, descriptorer og heap-descriptorer, rod-signaturer, unordered access, Samplere, kommandosignaturer, rod-konstanter, indirekte rendering, Clear*() metoder og Copy*(). I libvkd3d-shader er oversættelsen af bytekode til shader-modeller implementeret i mellemformatet SPIR-V. Der understøttes vertex-, pixel-, tessellations-, compute- og simple geometriske shader-standarder, samt serialisering og deserialisering af rod-signaturer. Af shader-instruktioner er aritmetiske, atomare og bitoperationer, sammenlignings- og kontrolflowoperatorer, sample-, gather- og load-instruktioner samt operationer af unordered access type (UAV, Unordered Access View) implementeret.
I den nye version:
- Tidlig støtte til shader-sproget MSL (Metal Shading Language), der bruges af Apple i grafik-API'en Metal, er blevet tilføjet.
- Støtte til disassembler for binære effekter er blevet implementeret.
- I biblioteket libvkd3 er metoden OMSetDepthBounds() blevet implementeret i ID3D12GraphicsCommandList1 for dynamisk ændring af det tilladte dybdeområde i Z-bufferen.
- Miljøvariablen VKD3D_CAPS_OVERRIDE er blevet tilføjet for at omoverride de oplysninger om tilgængelige funktioner, der gives til applikationer, såsom de maksimalt understøttede funktionsniveauer og ressourcebindinger.
- Der er tilføjet tidlig støtte til tessellations-shader i implementeringen af shader-sproget HLSL. Indbyggede funktioner som dst(), f32tof16(), mad(), modf() og sincos() er blevet implementeret. For profilerne 1, 2 og 3 af shader-modeller er støtte til operationen 'discard' blevet tilføjet. Der er tilføjet understøttelse til inddata-semantikken SV_SampleIndex for fragment-shader og SV_GroupIndex for compute-shader.
- En stor mængde nye instruktionssæt til shader-sproget GLSL er blevet implementeret.
Kilde: opennet.ru
