La projekto Wine publikigis la liberigon de la pako vkd3d 1.7 kun efektivigo de Direct3D 12, kiu funkcias per elsendaj vokoj al la grafika API de Vulkan. La pakaĵo inkluzivas libvkd3d-bibliotekojn kun efektivigoj de Direct3D 12, libvkd3d-shader kun tradukisto de shader-modeloj 4 kaj 5 kaj libvkd3d-utils kun funkcioj por simpligi la portadon de Direct3D 12-aplikoj, same kiel aron da demo-ekzemploj, inkluzive de haveno. de glxgears al Direct3D 12. La projektkodo estas distribuita licencite laŭ LGPLv2.1.
La libvkd3d-biblioteko subtenas plej multajn funkciojn de Direct3D 12, inkluzive de grafikaĵoj kaj komputikaj instalaĵoj, vostoj kaj komandlistoj, teniloj kaj amaso-teniloj, radikaj subskriboj, neorda aliro, Samplers, komandsignaturoj, radikaj konstantoj, nerekta bildigo, Klaraj metodoj *( ) kaj Kopiu*(). En libvkd3d-shader, la traduko de bajtkodo de ombraj modeloj 4 kaj 5 en mezan SPIR-V-reprezentantaron estas efektivigita. Elportas verticajn, pikselojn, teselacion, komputadon kaj simplajn geometriajn nuancilojn, radiksignaturan seriigon kaj deseriigon. Shader-instrukcioj inkluzivas aritmetikajn, atomajn kaj bitajn operaciojn, komparajn kaj datumfluajn kontrolfunkciigistojn, specimenon, kunvenigi kaj ŝarĝi instrukciojn, neordigitajn aliroperaciojn (UAV, Unordered Access View).
En la nova versio:
- Laboro daŭre plibonigis la ombradan kompililon en HLSL (High-Level Shader Language):
- Aldonis la kapablon voki kutimajn funkciojn kaj uzi tabelojn kiel parametrojn al kutimaj funkcioj.
- Aldonita subteno por SV_DispatchThreadID, SV_GroupID kaj SV_GroupThreadID parametroj.
- Aldonitaj enkonstruitaj funkcioj all(), distance(), exp(), exp2(), frac(), lit(), reflect(), sin(), cos(), smoothstep(), sqrt(), rsqrt () , paŝo (), transponu ().
- Aldonita komenca subteno por malalta precizeca glitkoma tipoj kiel ekzemple "min16float".
- Signife plibonigita subteno por Direct3D 1/2/3 shader modelprofiloj.
- Aldonita publika API por analizado (vkd3d_shader_parse_dxbc) kaj seriigo (vkd3d_shader_serialize_dxbc) de DXBC binaraj datumoj.
fonto: opennet.ru