Projekti Wine publikoi lëshimin e paketës vkd3d 1.13 me implementimin e Direct3D 12, i cili funksionon përmes translacionit të thirrjeve në API-në grafike Vulkan. Paketa përmban bibliotekat libvkd3d me implementimin e Direct3D 12, libvkd3d-shader me përkthyesin e modeleve 4 dhe 5 të shenjave dhe libvkd3d-utils me funksione për të lehtësuar portimin e aplikacioneve Direct3D 12, si dhe një grup shembujsh demonstrues, duke përfshirë portin glxgears në Direct3D 12. Kodi i projektit shpërndahet sipas licencës LGPLv2.1.
Biblioteka libvkd3d mbështet shumicën e funksionaliteteve të Direct3D 12, duke përfshirë mjetet për grafikë dhe llogaritje, radhët dhe listat e komandave, deshkruesit dhe deshkruesit e grumbullit, nënshkrimet rrënjësore, qasjen jo të renditur, Sampler-at, nënshkrimet e komandave, konstantat rrënjësore, vizatimin indirekt, metodat Clear*() dhe Copy*(). Në libvkd3d-shader është realizuar përkthimi i bytecode të modeleve të shenjuesve në përfaqësimin e ndërmjetëm SPIR-V. Mbështeten shenjuesit e pikëve, shenjuesit e rrezes, shenjuesit tessellation, shenjuesit llogaritës dhe shenjuesit e thjeshtë gjeometrikë, si dhe serializimi dhe deserializimi i nënshkrimit rrënjësor. Nga instruksionet e shenjuesve janë realizuar operacione aritmetike, atomike dhe bitore, operatorë krahasimi dhe menaxhimi i rrjedhës së të dhënave, instrukcionet sample, gather dhe load, operacionet e qasjes jo të renditur (UAV, Unordered Access View).
Në këtë version të ri:
- Compiler-i HLSL ka fituar mbështetje për shkrirjen e cikleve (loop unrolling, optimizim që zëvendëson operacionet ciklike me disa kopje radhazi të kodit për të përdorur më mirë cache-në e procesorit dhe për të reduktuar degëzimin).
- Shto e shtuar mbështetje për kompajlerin e efekteve për disa objekte të gjendjes së modelit të katërt të shaderëve.
- Sigurohet mbështetje për llojet e modelit të katërt të shaderëve BlendState, ComputeShader, DomainShader, GeometryShader, HullShader, DepthStencilState dhe RasterizerState, si dhe për funksionet OMSetRenderTargets(), SetBlendState(), SetComputeShader(), SetDomainShader(), SetGeometryShader(), SetHullShader(), SetPixelShader(), SetVertexShader(), SetDepthStencilState() dhe SetRasterizerState().
- Në kompajlerin e shaderëve është implementuar mbështetje për analizimin dhe ruajtjen e vlerave të inicializimit në formate të ndryshme për variablat globalë, parametrat e funksioneve dhe annotimet.
- Shtohet mbështetje për hapësirën e regjistrave të modelit të shaderëve 5.1.
- Janë implementuar funksione të brendshme tex1D(), tex2D(), tex3D(), texCUBE(), asint(), f16tof32(), faceforward(), GetRenderTargetSampleCount(), rcp(), tex2Dbias(), tex1Dgrad(), tex2Dgrad(), tex3Dgrad() dhe texCUBEgrad().
- NĂ« libvkd3d Ă«shtĂ« shtuar ndĂ«rfaqja ID3D12CommandList6 dhe Ă«shtĂ« implementuar mundĂ«sia e krijimit tĂ« teksteve, kompresimi i tĂ« cilave bĂ«het nĂ« nivelin e blloqeve tĂ« veçanta (p.sh., blloqet e madhe 4Ă4 pixel kompresohen veçmas).
- Shtuar mbështetje për strukturën vkd3d_shader_parameter_info dhe parametrat 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 dhe VKD3D_SHADER_PARAMETER_TYPE_BUFFER.
Burimi: opennet.ru
