DirectX 12 D3D12 krijgt nieuwe functie die meer controle geeft over geheugentoewijzing aan GPU of CPU dynamisch

In de komende grote update voor Windows 10 OS krijgen de DirectX12, en meer specifiek de Direct3D (D3D12), niet één maar nieuwe vlaggen die de manier waarop geheugenbronnen worden toegewezen zullen veranderen. Het lijkt erop dat Microsoft zich terecht zorgen maakt over de manier waarop geheugen en verwerkingskracht worden aangevraagd door en toegewezen aan applicaties, wat vaak een knelpunt kan vormen. Overigens hebben deze nieuwe vlaggen geen directe invloed op het geheugen, maar eerder op de manier waarop het wordt toegewezen en beheerd.

Microsoft is actief bezig geweest met het ontwikkelen van de nieuwste versie van het DirectX-platform, dat lange tijd een toonaangevende standaard is voor desktop-gaming. De nieuwste versie van Microsoft DirectX 12 heeft de laatste tijd verschillende nieuwe functies gekregen. Onlangs hebben we de meest prominente en belangrijke nieuwe functies voor DirectX 12 wat ontwikkelaars en eindgebruikers aanzienlijk ten goede zou komen. Deze week gaf Microsoft aan dat de volgende grote update voor Windows 10 twee nieuwe vlaggen voor DirectX12 Direct3D zou moeten bevatten. Interessant is dat ontwikkelaars die vandaag hetzelfde willen verkennen, gewoon de nieuwste Windows 10 Insider Preview-build en SDK Preview Build voor Windows 10 (20H1) van het Windows Insider-programma moeten downloaden en installeren.

Windows 10 DirectX 12 Direct3D krijgt twee nieuwe vlaggen voor dynamische geheugentoewijzing tussen CPU en GPU:

In de komende update van Windows 10 voegt D3D12 twee nieuwe vlaggen toe aan de D3D12_HEAP_FLAG-opsomming. Deze nieuwe vlaggen zijn overigens "vergankelijke" eigenschappen. Simpel gezegd betekent dit dat de nieuwe vlaggen geen directe invloed hebben op het resulterende geheugen zelf. In plaats daarvan hebben de nieuwe vlaggen invloed op de manier waarop het geheugen wordt toegewezen. Bovendien worden deze vlaggen niet weerspiegeld ID3D12Heap::GetDesc of ID3D12Resource::GetHeapProperties.

D3D12_HEAP_FLAG_CREATE_NOT_RESIDENT:

In de huidige iteratie, wanneer een ontwikkelaar D3D vraagt ​​om een ​​heap of vastgelegde bron toe te wijzen, is het laatste dat gebeurt voordat hij het object terugkrijgt, het geheugen wordt resident gemaakt. Dit lijkt opmerkelijk veel op ID3D12Apparaat :: MakeResident wordt uitgeoefend. Onnodig toe te voegen, een dergelijk proces levert meteen twee problemen op:

  1. Het ontwerp blokkeert een CPU-thread totdat het geheugen volledig klaar is voor gebruik. Dit is geen ideale of gewenste situatie
  2. Het proces stelt ontwikkelaars ook in staat geheugen te veel te besteden, boven wat het huidige procesbudget aangeeft dat hij zou moeten gebruiken.

Het nieuw toegevoegde ID3D12Device3 :: EnqueueMakeResident laat apps verschillende keuzes maken. De apps kunnen wachten op residentie met behulp van de GPU in plaats van de CPU of vragen dat de residentie-operatie mislukt in plaats van over het budget te gaan. Toewijzing van geheugen in een niet-ingezeten staat resulteert in het verlenen van beide voordelen aan het eerste gebruik van middelen.

D3D12_HEAP_FLAG_CREATE_NOT_ZEROED:

Deze vlag probeert inhoud met nulwaarde aan te pakken die toegezegde bronnen en hopen die nieuw door D3D zijn gemaakt, heeft ontvangen. Microsoft probeerde dit proces te optimaliseren door meer geheugen voor hergebruik mogelijk te maken dat nooit de grenzen van een bepaald proces had verlaten zonder nulstelling. Dit werkte echter niet goed en dwong Microsoft-technici om terug te gaan naar het retourneren van alleen geheugen op nul. Onnodig te vermelden dat deze manier nogal vervelend was, omdat de geheugenbeheerder expliciet nullen in het geheugen moet schrijven voordat hij deze terugstuurt naar de ontwikkelaars voor hergebruik.

Als een manier om het proces te optimaliseren, krijgen ontwikkelaars de mogelijkheid om zich af te melden voor het vervelende proces door simpelweg de nieuwe vlag op te geven tijdens de toewijzing van heap / resources. In wezen zou de dynamische hertoewijzing het verplichte nulproces voor alle tijden kunnen minimaliseren en wat vrijgemaakt geheugen toewijzen dat de processen van de ontwikkelaar gebruikten zonder het door het proces voor opnieuw op nul stellen te dwingen.

Microsoft heeft deze nieuwe vlaggen al toegevoegd en er zijn geen nieuwe stuurprogramma's voor nodig. Bovendien is er geen opgedragen CheckFeatureSupport optie voor deze. In wezen zijn deze nieuwe vlaggen beschikbaar telkens wanneer ID3D12Device8 wordt blootgesteld, of een controle op D3D12_FEATURE_D3D12_OPTIONS7 slaagt. Alle nieuwe vlaggen vereisen dat de ontwikkelaars processen draaien op een versie van D3D12 die ze begrijpt.

Facebook Twitter Google Plus Pinterest