Spoločnosť Microsoft zverejnila zdrojový kód vrstvy D3D9On12, ktorá sa používa na preklad príkazov Direct3D 9 do Direct3D 12

Microsoft priniesol dobrú správu a je to tak nedávno oznámil to prostredníctvom príspevku na blogu otvorenie zdrojového kódu vrstvy D3D9On12 s implementáciou zariadenia DDI (Device Driver Interface), ktoré prekladá príkazy Direct3D 9 (D3D9) do príkazov Direct3D 12 (D3D12).

Tento krok spoločnosti Microsoft teraz vývojárom uľahčí ako kedykoľvek predtým prechod z DirectX11 na DirectX12 pre ich hry. Prekladová vrstva DX12 je v podstate pomocná knižnica na preklad grafických konceptov a príkazov z domény v štýle DX11 do domény v štýle DX12.

Už je to nejaký čas, čo sme naposledy spomínali mapovaciu vrstvu D3D9On12. Ako rýchla aktualizácia mapuje príkazy D3D9 na D3D12, ktoré fungujú ako rozhranie DDI (D3D9 Device Driver Interface). Táto mapovacia vrstva umožňuje starším aplikáciám D3D9 bežať na moderných systémoch, ktoré nemusia mať ovládač D3D9. Od posledného blogového príspevku sme pridali podporu pre rozšírenia Alpha to Coverage, opravili sme niektoré chyby a vyčistili základňu kódu pre open source..

To je nepochybne dobrá správa a je to tak rôzne projekty, ktoré s vrstvou pracujú, môžu teraz ťažiť, pretože ako taký umožňuje starším aplikáciám pracovať v prostrediach, ktoré podporujú iba D3D12, tj napríklad to môže byť užitočné pri implementácii D3D9 na základe projektov vkd3d a VKD3D-Protonpretože tieto ponúkajú implementáciu Direct3D 12 pre Linux, ktorá funguje tak, že prekladá volania D3D12 do grafického rozhrania Vulkan API.

D3D9On12 je vrstva, ktorá mapuje grafické príkazy od D3D9 do D3D12. D3D9On12 nie je implementáciou rozhrania D3D9 API, ale skôr implementáciou používateľského režimu D3D9 DDI (Device Driver Interface). To znamená, že to nie je binárny súbor s názvom d3d9.dll, ale skôr sa nazýva d3d9on12.dll.

Keď aplikácia vytvorí zariadenie D3D9, môže sa rozhodnúť byť zariadením D3D9On12, nie natívnym zariadením D3D9. Keď sa to stane, d3d9on12.dll sa načíta za behu D3D9 a inicializuje sa. Keď aplikácia zavolá príkazy vykreslenia, D3D9 tieto príkazy overí a potom tieto príkazy skonvertuje na DDI D3D9 a odošle ich na D3D9On12, rovnako ako všetky ovládače D3D9.

D3D9On12 prevezme tieto príkazy a zmení ich na volania rozhrania API D3D12, ktoré sú ďalej overené runtime D3D12, voliteľne vrátane ladiacej vrstvy D3D12, ktoré sú potom prevedené na D3D12 DDI a odoslané do ovládača D3D12.

Tiež sa o tom hovorí projekt je založený na kóde podobného subsystému zahrnutého v systéme Windows 10. Je potrebné poznamenať, že publikácia kódu D3D9On12 poskytne príležitosť aby predstavitelia komunity podieľať sa na opravách chýb a pridávaní optimalizácií, a môže tiež slúžiť ako príklad na štúdium implementácie ovládačov D3D9 DDI a rámca na vytváranie takýchto vrstiev na preklady rôznych grafických rozhraní API v D3D12.

Prečo open source?
D3D9On12 je súčasťou systému Windows 10 už niekoľko rokov a za ten čas narástol na stabilite a použiteľnosti. Nech je to otvorený zdroj:

Umožnite komunite prispievať ďalšími opravami chýb alebo vylepšeniami výkonu.
slúžiť ako ďalší príklad použitia D3D12TranslationLayer
dajte záujemcom pozrieť sa, ako vyzerá implementácia D3D9 DDI

Súčasne bol vydaný balík DXBC Signer, ktorý umožňuje podpisovanie súborov DXBC ľubovoľne generované súbormi nástrojov tretích strán. D3D9On12 používa tento balík na podpisovanie DXBC generovaných konverziou shaderov na nový model.

Konečne ak máte záujem dozvedieť sa o tom viacMôžete si prezrieť podrobnosti o publikácii, ktorú spoločnosť Microsoft urobila na svojom blogu Na nasledujúcom odkaze.


Zanechajte svoj komentár

Vaša e-mailová adresa nebude zverejnená. Povinné položky sú označené *

*

*

  1. Zodpovedný za údaje: Miguel Ángel Gatón
  2. Účel údajov: Kontrolný SPAM, správa komentárov.
  3. Legitimácia: Váš súhlas
  4. Oznamovanie údajov: Údaje nebudú poskytnuté tretím stranám, iba ak to vyplýva zo zákona.
  5. Ukladanie dát: Databáza hostená spoločnosťou Occentus Networks (EU)
  6. Práva: Svoje údaje môžete kedykoľvek obmedziť, obnoviť a vymazať.