Wine-projektet har offentliggjort en frigivelse af pakken vkd3d 1.12 med en implementering af Direct3D 12, der fungerer gennem oversættelse af kald til grafisk API Vulkan. Pakken inkluderer bibliotekerne libvkd3d med implementering af Direct3D 12, libvkd3d-shader med en oversætter til shadermodellerne 4 og 5 samt libvkd3d-utils med funktioner til at lette porteringen af Direct3D 12-applikationer. Derudover er der et sæt demonstrations eksempler, herunder en port af glxgears til Direct3D 12. Projektets kode 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:
- HLSL-kompilatoren har fået tilføjet støtte til direkte kompilering til assemblykode for Direct3D-shadere og måltyper SPIR-V.
- HLSL-kompilatoren har forbedret støtte for profilerne 1, 2 og 3 af shadermodeller.
- For HLSL er der implementeret indbyggede funktioner som cosh(), determinant(), refract(), sinh() og tanh().
- I libvkd3d er der tilføjet støtte for formaterne DXGI_FORMAT_B5G6R5_UNORM, DXGI_FORMAT_B5G5R5A1_UNORM, og DXGI_FORMAT_B4G4R4A4_UNORM, hvis de understøttes i den eksisterende Vulkan API-implementering.
- Der er tilføjet support for grænsefladerne ID3D12ShaderCacheSession og ID3D12Device9. Til ID3D12Device8-grænsefladen er metoderne CreateCommittedResource2(), CreatePlacedResource1(), GetCopyableFootprints1() og GetResourceAllocationInfo2() blevet tilføjet.
- Der er implementeret kontrolforespørgsler D3D12_FEATURE_D3D12_OPTIONS14, D3D12_FEATURE_D3D12_OPTIONS15, D3D12_FEATURE_D3D12_OPTIONS16, D3D12_FEATURE_D3D12_OPTIONS17 og D3D12_FEATURE_D3D12_OPTIONS18.
- I libvkd3d-shader er der tilføjet eksperimentel support til de fleste metoder og instruktioner i 6. shadermodel for DXIL (DirectX Intermediate Language).
Kilde: opennet.ru
