DirectX 12 D3D12 saab uue funktsiooni, mis võimaldab dünaamiliselt GPU-le või protsessorile suuremat kontrolli mälu eraldamise üle

Riistvara / DirectX 12 D3D12 saab uue funktsiooni, mis võimaldab dünaamiliselt GPU-le või protsessorile suuremat kontrolli mälu eraldamise üle 3 minutit loetud

DirectX 12



Eelseisvas Windows 10 OS-i värskenduses esitatakse DirectX12 ja täpsemalt Direct3D (D3D12) mitte ühe, vaid uute lippude saamine mis muudab mäluressursside jaotamise viisi. Näib, et Microsoft on õigustatult mures selle pärast, kuidas rakendused mälu ja töötlemisvõimsust taotlevad ja neile eraldavad, mis võib sageli tekitada kitsaskoha. Muide, need uued lipud ei mõjuta mälu otseselt, vaid pigem selle eraldamise ja haldamise viisi.

Microsoft on aktiivselt arendanud DirectX-i platvormi uusimat iteratsiooni, mis on pikka aega olnud lauaarvutimängude juhtiv standard. Microsoft DirectX 12 uusim versioon on viimasel ajal saanud mitmeid uusi funktsioone. Hiljuti käsitlesime teemat DirectX 12 kõige silmapaistvamad ja olulisemad uued funktsioonid mis tooks arendajatele ja lõppkasutajatele märkimisväärset kasu. Sel nädalal näitas Microsoft, et järgmine suurem Windows 10 värskendus peaks sisaldama DirectX12 Direct3D jaoks kaht uut lippu. Huvitav on see, et arendajad, kes soovivad sama täna uurida, peavad Windows Insideri programmist lihtsalt alla laadima ja installima uusima Windows 10 Insider Preview ja SDK Preview Build for Windows 10 (20H1).

Windows 10 DirectX 12 Direct3D kahe uue lipu saamiseks dünaamilise mälu jaotamiseks protsessori ja GPU vahel:

Windows 10 eelseisvas värskenduses lisab D3D12 loendisse D3D12_HEAP_FLAG kaks uut lippu. Muide, need uued lipud on 'püsimatud' omadused. Lihtsamalt öeldes tähendab see, et uued lipud ei mõjuta otseselt tekkivat mälu ennast. Selle asemel mõjutavad uued lipud mälu jaotamise viisi. Pealegi ei kajastu need lipud ID3D12Heap :: GetDesc või ID3D12Resource :: GetHeapProperties .



D3D12_HEAP_FLAG_CREATE_NOT_RESIDENT:

Praeguses iteratsioonis, kui arendaja nõuab D3D-lt hunniku või pühendatud ressursi eraldamist, on viimane asi, mis juhtub enne objekti tagasi saamist, kui mälu saab elama. See on märkimisväärselt sarnane ID3D12Device :: MakeResident esitatakse. Pole vaja lisada, et selline protsess esitab kohe kaks teemat:



  1. Kujundus blokeerib protsessori lõime, kuni mälu on täielikult kasutusvalmis. See pole ideaalne ega soovitud olukord
  2. Protsess võimaldab arendajatel ka mälu üle lubada, mis ületab praeguse protsessieelarve, mida ta peaks kasutama.

Äsja lisatud ID3D12Device3 :: EnqueueMakeResident võimaldab rakendustel teha erinevaid valikuid. Rakendused võivad oodata residentuuri, kasutades GPU-d, mitte protsessorit, või taotleda residentuuri toimingu ebaõnnestumist, mitte ületada eelarvet. Mälu eraldamine mitteresidendist riigis annab ressursside esmakordsele kasutamisele mõlemad eelised.

D3D12_HEAP_FLAG_CREATE_NOT_ZEROED:

See lipp üritab lahendada nullitud sisu, mis eraldas D3D poolt loodud äsja loodud ressursse ja hunnikuid. Microsoft üritas seda protsessi optimeerida, lubades rohkem taaskasutada mälu, mis ei olnud kunagi antud protsessi piiridest nullimata. See ei töötanud aga hästi ja sundis Microsofti insenere tagasi minema ainult nullitud mälu tagastamise juurde. Ütlematagi selge, et see viis oli üsna tüütu, sest mäluhaldur peab mällu selgesõnaliselt nullid kirjutama, enne kui ta selle arendajatele taaskasutamiseks tagastab.

Protsessi optimeerimise eesmärgil antakse arendajatele võimalus loobuda tüütust protsessist, määrates lihtsalt uue lipu kuhja / ressursi jaotamise ajal. Põhimõtteliselt võib dünaamiline ümberjaotamine minimeerida kohustusliku kõigi aegade nullimisprotsessi ja eraldada vabanenud mälu, mida arendaja protsessid kasutasid, ilma et ta sunniks seda uuesti nullimisprotsessi läbima.



Microsoft on need uued lipud juba lisanud ja need ei vaja uusi draivereid. Pealegi pole pühendatud CheckFeatureSupport nende jaoks. Põhimõtteliselt on need uued lipud saadaval igal ajal, kui ID3D12Device8 on paljastatud või kui D3D12_FEATURE_D3D12_OPTIONS7 kontroll õnnestub. Kõik uued lipud nõuavad, et arendajad töötaksid protsessides D3D12 versioonis, mis neid mõistab.

Sildid Otsene X12 DirectX Microsoft Windows