DirectX 12 D3D12 získava novú funkciu, ktorá poskytuje väčšiu kontrolu nad prideľovaním pamäte dynamicky buď GPU, alebo CPU

Hardware / DirectX 12 D3D12 získava novú funkciu, ktorá poskytuje väčšiu kontrolu nad prideľovaním pamäte dynamicky buď GPU, alebo CPU 3 minúty prečítané

DirectX 12



V pripravovanej veľkej aktualizácii na operačný systém Windows 10 bude DirectX12, presnejšie Direct3D (D3D12), nedostanete iba jednu, ale nové vlajky ktorý zmení spôsob alokácie pamäťových zdrojov. Zdá sa, že spoločnosť Microsoft je oprávnene znepokojená tým, ako sú pamäť a procesorový výkon požadovaný a pridelený aplikáciám, čo často môže vytvoriť prekážku. Mimochodom, tieto nové príznaky nebudú mať priamy vplyv na pamäť, ale skôr ovplyvnia spôsob jej alokácie a správy.

Spoločnosť Microsoft aktívne vyvíja najnovšiu iteráciu platformy DirectX, ktorá je už dlho popredným štandardom pre stolné hry. Najnovšia verzia Microsoft DirectX 12 dostáva v poslednej dobe niekoľko nových funkcií. Nedávno sme pokryli najdôležitejšie a najdôležitejšie nové funkcie DirectX 12 čo by výrazne prospelo vývojárom a koncovým používateľom. Tento týždeň spoločnosť Microsoft naznačila, že ďalšia veľká aktualizácia systému Windows 10 by mala obsahovať dve nové vlajky pre DirectX12 Direct3D. Je zaujímavé, že vývojári, ktorí to chcú dnes preskúmať, si musia jednoducho stiahnuť a nainštalovať najnovšie zostavenie ukážky Windows 10 Insider Preview a SDK Preview Build pre Windows 10 (20H1) z programu Windows Insider.



Windows 10 DirectX 12 Direct3D Ak chcete získať dva nové príznaky pre dynamické prideľovanie pamäte medzi CPU a GPU:

V pripravovanej aktualizácii na Windows 10 bude D3D12 pridávať do zoznamu D3D12_HEAP_FLAG dva nové príznaky. Mimochodom, tieto nové príznaky sú „nestále“ vlastnosti. Jednoducho povedané, znamená to, že nové príznaky priamo neovplyvnia samotnú výslednú pamäť. Namiesto toho nové príznaky ovplyvnia spôsob alokácie pamäte. Tieto príznaky sa navyše neodrážajú od ID3D12Heap :: GetDesc alebo ID3D12Resource :: GetHeapProperties .



D3D12_HEAP_FLAG_CREATE_NOT_RESIDENT:

V jeho súčasnej iterácii, kedykoľvek vývojár požiada D3D o pridelenie haldy alebo vyhradeného prostriedku, posledná vec, ktorá sa stane predtým, ako vráti objekt, je pamäť, ktorá sa stane rezidentnou. Toto je pozoruhodne podobné ID3D12Device :: MakeResident sa vykonáva. Netreba dodávať, že takýto proces predstavuje hneď dva problémy:



  1. Dizajn blokuje vlákno CPU, kým nie je pamäť úplne pripravená na použitie. Toto nie je ideálna alebo želaná situácia
  2. Tento proces tiež umožní vývojárom nadmerne vyťažiť pamäť nad rámec toho, čo naznačuje súčasný rozpočet procesu, ktorý by mal používať.

Novo pridané ID3D12Device3 :: EnqueueMakeResident umožňuje aplikáciám robiť rôzne rozhodnutia. Aplikácie mohli čakať na rezidenciu pomocou GPU namiesto CPU alebo požiadať o zlyhanie rezidenčnej operácie namiesto prekročenia rozpočtu. Alokácia pamäte v nerezidentnom stave vedie k udeleniu oboch výhod prvému použitiu zdrojov.

D3D12_HEAP_FLAG_CREATE_NOT_ZEROED:

Tento príznak sa pokúša adresovať vynulovaný obsah, ktorý vyhradil zdroje a hromady novovytvorené prijatým D3D. Spoločnosť Microsoft sa pokúsila optimalizovať tento proces povolením väčšieho množstva opätovne použitej pamäte, ktorá nikdy neopustila hranice daného procesu bez vynulovania. To však nefungovalo dobre a prinútilo inžinierov Microsoftu vrátiť sa k vráteniu iba vynulovanej pamäte. Je zbytočné spomínať, že tento spôsob bol dosť zdĺhavý, pretože správca pamäte musí do pamäte výslovne zapisovať nuly predtým, ako ju vráti vývojárom na opätovné použitie.

Ako spôsob optimalizácie procesu sa vývojárom poskytuje možnosť odhlásiť sa z nudného procesu jednoduchým zadaním nového príznaku počas prideľovania haldy / zdroja. Dynamické prerozdelenie by v zásade mohlo minimalizovať povinný proces nulovania všetkých čias a prideliť uvoľnenú pamäť, ktorú procesy vývojára používali, bez toho, aby ju nútil procesom nulovania.



Microsoft už tieto nové príznaky pridal a nevyžadujú nové ovládače. Navyše tu nie sú žiadne vyhradené CheckFeatureSupport možnosť pre tieto. Tieto nové príznaky sú v podstate k dispozícii vždy, keď je ID3D12Device8 vystavený, alebo keď je úspešná kontrola D3D12_FEATURE_D3D12_OPTIONS7. Všetky požiadavky na nové vlajky spočívajú v tom, že vývojári by mali spúšťať procesy na verzii D3D12, ktorá im rozumie.

Značky Priame X12 directx Microsoft Windows