DirectX 12 D3D12 dobi novo funkcijo, ki omogoča večji nadzor nad dodeljevanjem pomnilnika GPU ali CPU dinamično

Strojna oprema / DirectX 12 D3D12 dobi novo funkcijo, ki omogoča večji nadzor nad dodeljevanjem pomnilnika GPU ali CPU dinamično 3 minute branja

DirectX 12



V prihajajoči večji posodobitvi operacijskega sistema Windows 10 bo DirectX12 in natančneje Direct3D (D3D12) dobili ne eno, ampak nove zastave to bo spremenilo način dodeljevanja pomnilniških virov. Zdi se, da je Microsoft upravičeno zaskrbljen nad tem, kako zahtevajo pomnilnik in procesorsko moč in jih dodelijo aplikacijam, kar lahko pogosto povzroči ozko grlo. Mimogrede, te nove zastavice ne bodo neposredno vplivale na pomnilnik, temveč bodo vplivale na način njegove dodelitve in upravljanja.

Microsoft aktivno razvija najnovejšo ponovitev platforme DirectX, ki je že dolgo vodilni standard za namizne igre. Najnovejša različica Microsoft DirectX 12 v zadnjem času dobiva več novih funkcij. Pred kratkim smo pokrivali najpomembnejše in najpomembnejše novosti DirectX 12 kar bi bistveno koristilo razvijalcem in končnim uporabnikom. Ta teden je Microsoft navedel, da bi morala naslednja večja posodobitev sistema Windows 10 vključevati dve novi zastavici za DirectX12 Direct3D. Zanimivo je, da morajo razvijalci, ki želijo to raziskati tudi danes, preprosto prenesti in namestiti najnovejšo različico Windows 10 Insider Preview in SDK Preview Build za Windows 10 (20H1) iz programa Windows Insider.



Windows 10 DirectX 12 Direct3D bo dobil dve novi zastavici za dinamično dodeljevanje pomnilnika med CPU in GPU:

V prihajajoči posodobitvi sistema Windows 10 bo D3D12 dodal dve novi zastavi naštevanju D3D12_HEAP_FLAG. Mimogrede, te nove zastave so 'nestalne' lastnosti. Preprosto povedano, to pomeni, da nove zastavice ne bodo neposredno vplivale na sam nastali pomnilnik. Namesto tega bodo nove zastavice vplivale na način dodeljevanja pomnilnika. Poleg tega se te zastave ne odražajo ID3D12Heap :: GetDesc ali ID3D12Resource :: GetHeapProperties .



D3D12_HEAP_FLAG_CREATE_NOT_RESIDENT:

V trenutni ponovitvi, kadar koli razvijalec zahteva, da D3D dodeli kup ali namenski vir, je zadnja stvar, preden se objekt vrne nazaj, ta, da se pomnilnik obnovi. To je izredno podobno ID3D12Device :: MakeResident se izvaja. Ni treba posebej poudarjati, da tak postopek takoj predstavlja dve težavi:



  1. Zasnova blokira CPU Thread, dokler pomnilnik ni popolnoma pripravljen za uporabo. To ni idealna ali zaželena situacija
  2. Proces bo razvijalcem tudi omogočil, da preobremenijo pomnilnik, ki presega sedanji proračun postopka, ki bi ga moral uporabljati.

Novo dodano ID3D12Device3 :: EnqueueMakeResident omogoča aplikacijam različne izbire. Aplikacije bi lahko počakale na rezidenco z uporabo GPU namesto s CPU ali zahtevale, da rezidenčna operacija propade, namesto da bi pretiravala s proračunom. Dodelitev pomnilnika v državi nerezidentki ima za posledico tako prednosti prve uporabe virov.

D3D12_HEAP_FLAG_CREATE_NOT_ZEROED:

Ta zastavica poskuša obravnavati ničelno vsebino, ki je sprejela sredstva in kopice, ki jih je na novo ustvaril D3D. Microsoft je poskušal optimizirati ta postopek tako, da je omogočil več ponovne uporabe pomnilnika, ki nikoli ni zapustil meja določenega postopka brez ničlenja. Vendar to ni delovalo dobro in prisililo je Microsoftove inženirje, da so se vrnili k vrnitvi samo ničelnega pomnilnika. Ni treba posebej omenjati, da je bil ta način precej dolgočasen, saj mora upravitelj pomnilnika izrecno zapisati ničle v pomnilnik, preden ga vrne razvijalcem v ponovno uporabo.

Kot način za optimizacijo procesa razvijalci dobijo možnost, da onemogočijo dolgočasen postopek s preprostim določanjem nove zastavice med dodeljevanjem kopice / virov. V bistvu bi lahko dinamična prerazporeditev minimizirala obvezen postopek ničliranja za ves čas in dodelila nekaj sproščenega pomnilnika, ki so ga uporabljali procesi razvijalca, ne da bi ga prisilila v postopek ponovne ničle.



Microsoft je te nove zastave že dodal in ne potrebujejo novih gonilnikov. Poleg tega ni namenskega CheckFeatureSupport možnost za te. V bistvu so te nove zastavice na voljo kadar koli je izpostavljena ID3D12Device8 ali če preverjanje za D3D12_FEATURE_D3D12_OPTIONS7 uspe. Vsa nova zastava zahteva, da morajo razvijalci izvajati procese na različici D3D12, ki jih razume.

Oznake Neposreden X12 directx Microsoft Windows