„Wine“ projektas išleido naują „vkd3d 1.2“ paketo versiją su „Direct3D 12“ įdiegimu , kuris veikia versdamas iškvietimus į „Vulkan“ grafikos API.
Šioje naujoje „vkd3d 1.2“ versijoje yra keletas patobulinimų, tačiau svarbiausi iš jų yra „libvkd3d-shader“ prieinamumas kaip viešosios bibliotekos , palaikymas tessellation shaderiams, taip pat srautinės išvesties palaikymas.
Paketą sudaro „libvkd3d“ biblioteka su „Direct3D 12“ įgyvendinimais, „libvkd3d-shader“ biblioteka su 4 ir 5 modelių šešėlių vertėju ir „libvkd3d-utils“ biblioteka su funkcijomis, skirtomis supaprastinti „Direct3D 12“ programų perkėlimą, taip pat demonstracinių versijų rinkinys, įskaitant „glxgears“ perkėlimą į „Direct3D 12“. Projekto kodas platinamas pagal LGPLv2.1 licenciją.
„libvkd3d“ biblioteka palaiko daugumą „Direct3D 12“ funkcijų, įskaitant grafikos ir skaičiavimo funkcijas, komandų sąrašus ir eiles, deskriptorius ir kaupo deskriptorius, pagrindinius parašus, netvarkingą prieigą, pavyzdžių rinkiklius, komandų parašus, pagrindines konstantas, netiesioginį vaizdavimą ir kt.
„Libvkd3d-shader“ įgyvendina šešėliavimo modelių 4 ir 5 baitų kodų vertimą į tarpinį SPIR-V atvaizdavimą. Palaikomos viršūnės, pikseliai, mozaikavimas, paprastos ir skaičiavimo geometrijos šešėliavimo sistemos, šakninio parašo serializavimas ir deserializavimas.
Šešėlių instrukcijos apima aritmetines, atomines ir bitų po bito operacijas, duomenų srauto valdymo ir palyginimo operatorius, pavyzdžių ėmimo, rinkimo ir įkėlimo instrukcijas bei netvarkingos prieigos operacijas (UAV, Unordered Access View).
Šiame kūrimo etape ne visi „Direct3D 12“ iškvietimai yra įdiegti , o testavimas daugiausia buvo atliktas su demonstracinių programų rinkiniu. Šioje versijoje nėra kuriamų funkcijų, tokių kaip tesseliacijos ir sudėtingos geometrijos šešėliavimo palaikymas, taip pat keletas patobulinimų, susijusių su šešėliavimo įrankiais ir pagrindiniais „Direct3D 12“ metodais. Šios funkcijos bus pasiūlytos būsimoje versijoje.
Pagrindinės naujos „Vkd3d 1.2“ funkcijos
Vienas svarbiausių naujosios versijos pakeitimų yra „libvkd3d-shader“ bibliotekos prieinamumas trečiųjų šalių projektuose, nes buvo pridėtos kelios „Direct3D 12“ funkcijos, tokios kaip:
- Daugkartinis mėginių ėmimas.
- Rezervuoti ištekliai.
- Duomenų perdavimo greitis.
- Visų sąsajų „privačių duomenų“ API.
- „Shader“ išteklių rodinio komponentų susiejimai.
- VK_KHR_draw_indirect_count plėtinys.
- Predikatas / sąlyginis atvaizdavimas.
- Gylio atvaizdavimas be pikselių šešėlių.
- Gylio išpjova. Tam reikia „VK_EXT_depth_clip_enable“ plėtinio.
- Išmeskite rastrą.
- Dvigubas šaltinio maišymas.
- Pateiktų išteklių žemėlapis.
- Metodai „ReadFromSubresource“ () ir „WriteToSubresource“ (ID3D12Resource).
- Vienalaikė prieiga prie kelių eilių išteklių.
- Nuliniai vaizdai. Tai yra, nuomonės be pagrindinio šaltinio.
- Dar keletas funkcijų palaikymo užklausų.
Be to, verta paminėti ir pridėtą pagrindinių parašų konvertavimo, serializavimo ir deserializavimo palaikymą (vkd3d_serialize_versioned_root_signature() ir vkd3d_create_versioned_root_signature_deserializer()) , taip pat srautinio perdavimo išvesties palaikymą.
Kitas pastebimas pakeitimas yra aplinkos kintamųjų įgyvendinimas: VKD3D_CONFIG, skirtas nustatyti parinktis, keičiančias libvkd3d elgesį, ir VKD3D_VULKAN_DEVICE, skirtas nepaisyti įrenginio „Vulkan“ API atveju.
Be to, pridėtas šešėliavimo instrukcijų „bufinfo“, „eval_centroid“, „eval_sample_index“, „ld2ms“, „sample_b“, „sample_d“, „sample_info“, „samplepos“ palaikymas ir preliminarus „5.1“ modelio šešėliavimo įrankių palaikymas.
Taip pat palaikymas „OpenGL SPIR-V“ tikslinėms aplinkoms. Tai leidžia naudoti „libvkd3d-shader“ pagamintą SPIR-V su GL_ARB_gl_spirv. Tai apima „OpenGL“ atominių skaitiklių ir kombinuotų mėginių ėmėjų palaikymą.
Galiausiai, jei norite sužinoti daugiau apie šią naują versiją, galite peržiūrėti visą pakeitimų sąrašą šioje nuorodoje.
Kaip įdiegti „vkd3d“ į „Linux“?
Tiems, kurie nori įdiegti „vkd3d“ savo sistemoje, jie turėtų gauti šaltinio kodą ir tęsti kompiliaciją, nors praktiniais tikslais ar tiems naujokams jie gali išbandyti šią biblioteką be didelių pastangų. Tam jie turi įdiegti tik lutris ir pagal jo konfigūracijas.
Tiems, kurie domisi kompiliacija, jie turi gauti kodą su:
git clone git://source.winehq.org/git/vkd3d.git/
./autogen.sh
./configure
make
../vkd3d/configure --build=i686-pc-linux-gnu "CPPFLAGS=-m32" "LDFLAGS=-m32"
Galiausiai reikia įgalinti „Vulkan“ sluoksnius:
export VK_INSTANCE_LAYERS=VK_LAYER_LUNARG_standard_validation
VKD3D_CONFIG=vk_debug