DirectX 12 D3D12 dobiva novu značajku koja omogućuje veću kontrolu nad dodjelom memorije GPU-u ili CPU-u dinamički

Hardver / DirectX 12 D3D12 dobiva novu značajku koja omogućuje veću kontrolu nad dodjelom memorije GPU-u ili CPU-u dinamički 3 minute čitanja

DirectX 12



U nadolazećem velikom ažuriranju OS-a Windows 10, DirectX12, i preciznije, Direct3D (D3D12), bit će dobivajući ne jednu već nove zastave to će izmijeniti način raspodjele memorijskih resursa. Čini se da je Microsoft s pravom zabrinut zbog načina na koji se memorija i procesorska snaga zahtijevaju i dodjeljuju aplikacijama, što često može stvoriti usko grlo. Usput, ove nove zastavice neće izravno utjecati na memoriju, već će utjecati na način na koji je dodijeljena i kojom se upravlja.

Microsoft aktivno razvija najnoviju verziju DirectX platforme, koja je već dugo vodeći standard za igranje stolnih računara. Najnovija verzija Microsoft DirectX 12 u posljednje vrijeme dobiva nekoliko novih značajki. Nedavno smo pokrili najistaknutije i najvažnije nove značajke DirectX 12 što bi značajno koristilo programerima i krajnjim korisnicima. Ovaj je tjedan Microsoft najavio da bi sljedeće veliko ažuriranje sustava Windows 10 trebalo sadržavati dvije nove zastavice za DirectX12 Direct3D. Zanimljivo je da programeri koji to žele istražiti i danas trebaju jednostavno preuzeti i instalirati najnoviju verziju Windows 10 Insider Preview i SDK Preview Build za Windows 10 (20H1) iz programa Windows Insider.



Windows 10 DirectX 12 Direct3D dobit će dvije nove zastavice za dinamičko dodjeljivanje memorije između CPU-a i GPU-a:

U nadolazećem ažuriranju za Windows 10, D3D12 će dodati dvije nove zastavice nabrajanju D3D12_HEAP_FLAG. Inače, ove nove zastave su 'nestalna' svojstva. Jednostavno rečeno, to znači da nove zastavice neće izravno utjecati na samu rezultirajuću memoriju. Umjesto toga, nove će zastavice utjecati na način dodjele memorije. Štoviše, ove se zastave ne odražavaju ID3D12Heap :: GetDesc ili ID3D12Resource :: GetHeapProperties .



D3D12_HEAP_FLAG_CREATE_NOT_RESIDENT:

U svojoj trenutnoj iteraciji, kad god programer zatraži od D3D da dodijeli hrpu ili namjenski resurs, zadnja stvar koja se dogodi prije nego što vrati objekt je da memorija postane rezidentna. Ovo je izuzetno slično ID3D12Device :: MakeResident izvodi se. Nepotrebno je dodavati, takav postupak odmah predstavlja dva pitanja:



  1. Dizajn blokira CPU nit dok memorija ne bude u potpunosti spremna za upotrebu. Ovo nije idealna ili željena situacija
  2. Proces će također omogućiti programerima da prekomjerno predaju memoriju, izvan onoga što trenutni proračun postupka pokazuje da bi ga trebao koristiti.

Novo dodano ID3D12Device3 :: EnqueueMakeResident omogućuje aplikacijama donošenje različitih izbora. Aplikacije mogu pričekati rezidenciju pomoću GPU-a, a ne CPU-a, ili zatražiti neuspjeh rezidencijalne operacije, umjesto da prekomjerno troše proračun. Dodjela memorije u nerezidentnoj državi rezultira pružanjem obje prednosti prvoj upotrebi resursa.

D3D12_HEAP_FLAG_CREATE_NOT_ZEROED:

Ova zastava pokušava se obratiti nuliranom sadržaju koji je preuzeo resurse i hrpe novo stvorenih od strane D3D. Microsoft je pokušao optimizirati ovaj postupak omogućavanjem ponovne upotrebe memorije koja nikada nije izašla iz okvira određenog postupka bez nuliranja. Međutim, to nije uspjelo i natjeralo je Microsoftove inženjere da se vrate vraćanju samo nulirane memorije. Nepotrebno je spominjati da je ovaj način bio prilično naporan jer upravitelj memorije mora izričito upisati nule u memoriju prije nego što je vrati programerima na ponovnu upotrebu.

Kao način za optimizaciju procesa, programerima je dana mogućnost odjave od zamornog procesa jednostavnim navođenjem nove zastavice tijekom dodjele hrpe / resursa. U osnovi bi dinamička preraspodjela mogla minimizirati obvezni postupak nuliranja svih vremena i dodijeliti oslobođenu memoriju koju su procesi razvojnih programera koristili bez prisiljavanja na postupak ponovnog nuliranja.



Microsoft je već dodao ove nove zastavice i oni ne zahtijevaju nove upravljačke programe. Štoviše, nema namjenskog CheckFeatureSupport opcija za ove. U osnovi, ove nove zastavice dostupne su kad god je izložen ID3D12Device8 ili ako provjera D3D12_FEATURE_D3D12_OPTIONS7 uspije. Sve što se traži od novih zastavica jest da programeri trebaju pokretati procese na verziji D3D12 koja ih razumije.

Oznake Izravni X12 directx Microsoft Windows