Wine-projektet har udgivet udgivelsen af vkd3d 1.13-pakken med en implementering af Direct3D 12, der fungerer gennem broadcast-opkald til Vulkan graphics API. Pakken indeholder libvkd3d-biblioteker med implementeringer af Direct3D 12, libvkd3d-shader med en oversætter af shader-modeller 4 og 5 og libvkd3d-utils med funktioner til at forenkle porteringen af Direct3D 12-applikationer, samt et sæt demo-eksempler, inklusive en port af glxgears til Direct3D 12. Projektkoden er distribueret i licens under LGPLv2.1.
libvkd3d-biblioteket understøtter de fleste Direct3D 12-funktioner, inklusive grafik- og computerfaciliteter, køer og kommandolister, håndtag og heap-håndtag, rodsignaturer, out-of-order adgang, samplere, kommandosignaturer, rodkonstanter, indirekte gengivelse, Clear-metoder *( ) og Kopi*(). libvkd3d-shader implementerer oversættelse af bytekode for shader-modeller til en mellemliggende SPIR-V-repræsentation. Understøtter vertex, pixel, tessellation, beregning og simpel geometri shaders, rodsignatur-serialisering og deserialisering. Shader-instruktioner omfatter aritmetiske, atom- og bitoperationer, sammenlignings- og dataflowkontroloperatører, sample, indsamle og indlæse instruktioner, uordnede adgangsoperationer (UAV, Unordered Access View).
I den nye version:
- HLSL-kompileren understøtter nu sløjfeafrulning (en optimering, der erstatter cykliske operationer med flere på hinanden følgende kopier af kode for at gøre mere effektiv brug af processorcachen og reducere forgrening).
- Tilføjet effektkompilerunderstøttelse for nogle Shader Model 4-tilstandsobjekter.
- Der ydes support til shadermodeltyperne BlendState, ComputeShader, DomainShader, GeometryShader, HullShader, DepthStencilState og RasterizerState 4, samt funktionerne OMSetRenderTargets(), SetBlendState(), SetComputeShader(), SetDomainShader(), SetGeometryShader(), SetHullShader(), SetPixelShader(), SetVertexShader(), SetDepthStencilState() og SetRasterizerState().
- Shader-kompileren understøtter nu parsing og lagring af initialiseringsværdier for globale variabler, funktionsparametre og annoteringer i forskellige formater.
- Tilføjet understøttelse af shader model 5.1 registerplads.
- De indbyggede funktioner tex1D(), tex2D(), tex3D(), texCUBE(), asint(), f16tof32(), faceforward(), GetRenderTargetSampleCount(), rcp(), tex2Dbias(), tex1Dgrad(), tex2Dgrad(), tex3DCUBE() er implementeret() og texXNUMXDCUBE()
- ID3D3CommandList12-grænsefladen er blevet tilføjet til libvkd6d, og muligheden for at oprette teksturer, der er komprimeret på niveau med individuelle blokke, er blevet implementeret (for eksempel komprimeres 4x4 pixelblokke separat).
- Tilføjet understøttelse af vkd3d_shader_parameter_info-strukturen og parametrene 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 og VKD3D_SHADER_PARAMETER_TYPE_BUFFER.
Kilde: opennet.ru
