Wine projekt avaldas vkd3d paketi väljaande 1.17, mis implementeerib Direct3D 12, töötades läbi kutsete tõlke Vulkani graafikatehnoloogiasse. Paketis on libvkd3d raamatukogud Direct3D 12 teostuse jaoks, libvkd3d-shader, mis sisaldab 4. ja 5. mudeli shaderite tõlki ning libvkd3d-utils, mis sisaldab funktsioone Direct3D 12 rakenduste portimise lihtsustamiseks, samuti komplekt demonstreerivaid näiteid, sealhulgas glxgears porti Direct3D 12 jaoks. Projekti kood on litsentseeritud LGPLv2.1 alusel.
libvkd3d teebibliotek toetab enamiku Direct3D 12 funktsionaalsust, sealhulgas graafika ja arvutuste tööriistu, järjekordi ja käskude loendeid, deskriptorid ja mälu deskriptorid, juurtesignatuure, järjekorralt ligipääsu, samplerid, käskude signatuurid, juurte konstandid, kaudset renderdamist, Clear*() ja Copy*() meetodeid. libvkd3d-shaderis on rakendatud shaderi mudelite bytecode tõlkimine vahevormiks SPIR-V. Toetatakse tipus, pikslites, tesselatsioonis, arvutustes ja lihtsates geomeetrilistes shaderites, juurtesignatuuri serialiseerimist ja deserialiseerimist. Shaderi käskudest on rakendatud aritmeetilised, aatomilised ja bitilised operatsioonid, võrdlus- ja voogude juhtimise operaatorid, sample, gather ja load käsud, järjekorralt ligipääsu operatsioonid (UAV, Unordered Access View).
Uues versioonis:
- HLSL shaderikeeles on lisatud algne tugi rühmade jagatud mälule, geomeetriliste shaderite toe ulatus on laienenud ning StructuredBufferi ressursside jaoks on lisatud parser.
- MSL (Metal Shading Language) shaderikeele implementatsiooni arendamine on jätkunud, mida kasutab Apple oma Metal graafikatehnoloogias. Näiteks on MSL-is lisatud tsüklite tugi, pidevate mälubufferite kaudne aadresseerimine, tekstuuride proovivõtt ning erinevad täisarvuaritmet ja võrdlemise toimingud.
- Libvkd3d raamatukogus on ID3D12Device5 liidese teostusse lisatud meetod EnumerateMetaCommands().
- Uus shaderitüüp "tx" (VKD3D_SHADER_SOURCE_TX) on lisatud, mida kasutatakse tekstuuride töötlemise shaderite laadimiseks.
Allikas: opennet.ru
