Projekt Wine har publicerat version 1.13 av paketet vkd3d, som implementerar Direct3D 12, som fungerar via translatering av anrop till grafiska API:er Vulkan. Paketet innehÄller bibliotek som libvkd3d med implementation av Direct3D 12, libvkd3d-shader med translatörer för shader-modeller 4 och 5, samt libvkd3d-utils med funktioner för att förenkla portningen av Direct3D 12-applikationer, samt en uppsÀttning demonstrations exempel, inklusive porteringen av glxgears till Direct3D 12. Projektkoden distribueras under LGPLv2.1-licensen.
Biblioteket libvkd3d stöder de flesta funktionerna i Direct3D 12, inklusive verktyg för grafik och berÀkningar, köer och kommandolister, deskriptorer och stapeldeskriptorer, rot-signaturer, osorterad Ätkomst, Sampler-ar, kommandosignaturer, rot-konstanter, indirekt rendering, samt metoderna Clear*() och Copy*(). I libvkd3d-shader har translatörerna för shader-modeller implementerat översÀttning av bytekod till mellankod i SPIR-V. Vertex-, pixel-, tessellations-, compute- och geometriska shaders stöds, liksom serialisering och deserialisering av rot-signaturer. Bland shader-instruktionerna implementeras aritmetiska, atomÀra och bitoperationer, jÀmförelse- och kontrollflödesoperatörer, samt instruktionerna sample, gather och load, och operationerna för osorterad Ätkomst (UAV, Unordered Access View).
I den nya versionen:
- Kompilatorn HLSL har fÄtt stöd för loopopprullning (loop unrolling, en optimering dÀr cykliska operationer för att effektivt anvÀnda processorcache och minska förgrening ersÀtts med flera pÄ varandra följande kopior av koden).
- Stöd för effektkompilatorn har lagts till för vissa tillstÄndsobjekt av den fjÀrde shader-modellen.
- Stöd för typer av den fjÀrde shader-modellen som BlendState, ComputeShader, DomainShader, GeometryShader, HullShader, DepthStencilState och RasterizerState har sÀkerstÀllts, samt funktionerna OMSetRenderTargets(), SetBlendState(), SetComputeShader(), SetDomainShader(), SetGeometryShader(), SetHullShader(), SetPixelShader(), SetVertexShader(), SetDepthStencilState() och SetRasterizerState().
- I shader-kompilatorn har stöd för analys och lagring av olika format av initieringsvÀrden för globala variabler, funktionsparametrar och annotationer implementerats.
- Stöd för registerutrymmet i shader-modell 5.1 har lagts till.
- Implementerade inbyggda funktioner inkluderar tex1D(), tex2D(), tex3D(), texCUBE(), asint(), f16tof32(), faceforward(), GetRenderTargetSampleCount(), rcp(), tex2Dbias(), tex1Dgrad(), tex2Dgrad(), tex3Dgrad() och texCUBEgrad().
- I libvkd3d har grĂ€nssnittet ID3D12CommandList6 lagts till och möjligheten att skapa texturer, vars komprimering sker pĂ„ nivĂ„er av individuella block (till exempel komprimeras block av storlek 4Ă4 pixlar separat).
- Stödet för struktur vkd3d_shader_parameter_info och parametrarna 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 och VKD3D_SHADER_PARAMETER_TYPE_BUFFER har lagts till.
KĂ€lla: opennet.ru
