Microsoft heeft de broncode vrijgegeven van de D3D9On12-laag die wordt gebruikt om Direct3D 9-opdrachten te vertalen naar Direct3D 12

Er is goed nieuws vrijgegeven van Microsoft en het is dat onlangs maakte het bekend via een blogpost de broncode van de D3D9On12-laag openen met de implementatie van het DDI-apparaat (Device Driver Interface), dat Direct3D 9 (D3D9)-opdrachten omzet in Direct3D 12 (D3D12)-opdrachten.

Deze stap van Microsoft maakt het nu gemakkelijker dan ooit voor ontwikkelaars om voor hun games over te stappen van DirectX11 naar DirectX12. De DX12-vertaallaag is in wezen een helperbibliotheek voor het vertalen van grafische concepten en commando's van een DX11-stijl domein naar een DX12-stijl domein.

Het is een tijdje geleden dat we de D3D9On12-toewijzingslaag voor het laatst noemden. Als een snelle update wijst het D3D9-opdrachten toe aan D3D12 die fungeert als de D3D9 Device Driver Interface (DDI). Met deze kaartlaag kunnen oudere D3D9-toepassingen worden uitgevoerd op moderne systemen die mogelijk geen D3D9-stuurprogramma hebben. Sinds de laatste blogpost hebben we ondersteuning toegevoegd voor de Alpha to Coverage-extensies, een aantal bugs verholpen en de codebasis voor open source opgeschoond.

Dit is ongetwijfeld goed nieuws en is dat? verschillende projecten die met de laag werken, kunnen nu profiteren, omdat het legacy-applicaties in staat stelt om te werken in omgevingen die alleen D3D12 ondersteunen, dat wil zeggen bijvoorbeeld dit kan handig zijn om D3D9 te implementeren op basis van de projecten vkd3d en VKD3D-Protonomdat deze een Direct3D 12-implementatie voor Linux bieden die werkt door D3D12-aanroepen te vertalen naar de Vulkan grafische API.

D3D9On12 is een laag die grafische opdrachten van D3D9 tot D3D12 in kaart brengt. D3D9On12 is geen implementatie van de D3D9 API, maar eerder een implementatie van de D3D9 DDI (Device Driver Interface) gebruikersmodus. Dat betekent dat het geen binair bestand is met de naam d3d9.dll, maar eerder d3d9on12.dll.

Wanneer een toepassing een D3D9-apparaat maakt, kunnen ze ervoor kiezen een D3D9On12-apparaat te zijn in plaats van een native D3D9-apparaat. Wanneer dit gebeurt, wordt d3d9on12.dll geladen door de D3D9-runtime en geïnitialiseerd. Wanneer de toepassing de render-opdrachten aanroept, valideert D3D9 die opdrachten en converteert die opdrachten vervolgens naar DDI D3D9 en stuurt deze naar D3D9On12, net als elk D3D9-stuurprogramma.

D3D9On12 neemt deze opdrachten over en zet ze om in D3D12 API-aanroepen, die verder worden gevalideerd door de D3D12-runtime, optioneel inclusief de D3D12-foutopsporingslaag, die vervolgens worden geconverteerd naar DDI D3D12 en naar het D3D12-stuurprogramma worden verzonden.

Dat wordt ook vermeld het project is gebaseerd op de code van een soortgelijk subsysteem in Windows 10. Opgemerkt moet worden dat de publicatie van de D3D9On12-code zal een kans bieden zodat de vertegenwoordigers van de gemeenschap deel te nemen aan bugfixes en optimalisaties toe te voegen, en het kan ook als voorbeeld dienen om de implementatie van de D3D9 DDI-stuurprogramma's en een raamwerk voor het maken van dergelijke lagen voor vertalingen van verschillende grafische API's in D3D12 te bestuderen.

Waarom open source?
D3D9On12 maakt al een paar jaar deel uit van Windows 10 en is in die tijd gegroeid in stabiliteit en bruikbaarheid. Maak het open source:

Sta de community toe om aanvullende bugfixes of prestatieverbeteringen bij te dragen.
dienen als een ander voorbeeld van het gebruik van de D3D12TranslationLayer
laat geïnteresseerden zien hoe een D3D9 DDI-implementatie eruitziet

Tegelijkertijd is er een DXBC Signer-pakket uitgebracht dat de mogelijkheid biedt om DXBC-bestanden te ondertekenen willekeurig gegenereerd door toolkits van derden. D3D9On12 gebruikt dit pakket om DXBC's te ondertekenen die zijn gegenereerd door shaders naar een nieuw model te converteren.

Eindelijk als u er meer over wilt weten, kunt u de details bekijken van de publicatie die Microsoft op zijn blog heeft gemaakt In de volgende link.


Laat je reactie achter

Uw e-mailadres wordt niet gepubliceerd. Verplichte velden zijn gemarkeerd met *

*

*

  1. Verantwoordelijk voor de gegevens: Miguel Ángel Gatón
  2. Doel van de gegevens: Controle SPAM, commentaarbeheer.
  3. Legitimatie: uw toestemming
  4. Mededeling van de gegevens: De gegevens worden niet aan derden meegedeeld, behalve op grond van wettelijke verplichting.
  5. Gegevensopslag: database gehost door Occentus Networks (EU)
  6. Rechten: u kunt uw gegevens op elk moment beperken, herstellen en verwijderen.