DirectX 12 D3D12 získává novou funkci, která poskytuje větší kontrolu nad přidělením paměti dynamicky buď GPU, nebo CPU

Hardware / DirectX 12 D3D12 získává novou funkci, která poskytuje větší kontrolu nad přidělením paměti dynamicky buď GPU, nebo CPU 3 minuty čtení

DirectX 12



V nadcházející velké aktualizaci operačního systému Windows 10 bude DirectX12 a konkrétněji Direct3D (D3D12) nedostávám jen jednu, ale nové vlajky který změní způsob alokace paměťových zdrojů. Zdá se, že Microsoft je oprávněně znepokojen tím, jak jsou paměť a výpočetní výkon požadovány a přidělovány aplikacím, což může často vytvořit úzké místo. Mimochodem, tyto nové příznaky nebudou přímo ovlivňovat paměť, ale spíše ovlivní způsob, jakým je alokována a spravována.

Společnost Microsoft aktivně vyvíjí nejnovější iteraci platformy DirectX, která je již dlouho předním standardem pro stolní hry. Nejnovější verze Microsoft DirectX 12 v poslední době získává několik nových funkcí. Nedávno jsme pokryli nejdůležitější a nejdůležitější nové funkce DirectX 12 což by významně prospělo vývojářům a koncovým uživatelům. Tento týden společnost Microsoft uvedla, že příští velká aktualizace systému Windows 10 by měla obsahovat dva nové příznaky pro DirectX12 Direct3D. Zajímavé je, že vývojáři, kteří si to chtějí dnes prohlédnout, si musí jednoduše stáhnout a nainstalovat nejnovější verzi Windows 10 Insider Preview a SDK Preview Build pro Windows 10 (20H1) z programu Windows Insider.



Windows 10 DirectX 12 Direct3D Chcete-li získat dva nové příznaky pro dynamické přidělování paměti mezi CPU a GPU:

V nadcházející aktualizaci na Windows 10 přidá D3D12 do výčtu D3D12_HEAP_FLAG dva nové příznaky. Mimochodem, tyto nové příznaky jsou „nestálé“ vlastnosti. Jednoduše řečeno, to znamená, že nové příznaky přímo neovlivní samotnou výslednou paměť. Místo toho nové příznaky ovlivní způsob alokace paměti. Navíc se tyto příznaky neodrážejí ID3D12Heap :: GetDesc nebo ID3D12Resource :: GetHeapProperties .



D3D12_HEAP_FLAG_CREATE_NOT_RESIDENT:

Ve své aktuální iteraci, kdykoli vývojář požádá D3D o přidělení haldy nebo potvrzeného prostředku, poslední věcí, která se stane, než se vrátí objekt, je paměť, která se stane rezidentem. To je pozoruhodně podobné ID3D12Device :: MakeResident se provádí. Není třeba dodávat, že takový proces přináší hned dva problémy:



  1. Design blokuje vlákno CPU, dokud není paměť plně připravena k použití. To není ideální nebo žádaná situace
  2. Tento proces také umožní vývojářům nadměrně uvolnit paměť nad rámec toho, co naznačuje aktuální rozpočet procesu, který by měl používat.

Nově přidané ID3D12Device3 :: EnqueueMakeResident umožňuje aplikacím provádět různá rozhodnutí. Aplikace by mohly čekat na rezidenci pomocí GPU spíše než CPU nebo požádat o selhání rezidenční operace, než aby překročily rozpočet. Přidělení paměti v nerezidentním stavu má za následek předání obou výhod prvnímu použití prostředků.

D3D12_HEAP_FLAG_CREATE_NOT_ZEROED:

Tento příznak se pokouší adresovat nulovaný obsah, který potvrzuje zdroje a hromady nově vytvořené přijatým D3D. Společnost Microsoft se pokusila optimalizovat tento proces povolením více paměti pro opakované použití, které nikdy neopustilo hranice daného procesu bez vynulování. To však nefungovalo dobře a přinutilo inženýry společnosti Microsoft vrátit se k návratu pouze nulové paměti. Není nutné zmínit, že tento způsob byl docela zdlouhavý, protože správce paměti musí explicitně zapsat nuly do paměti, než ji vrátí vývojářům k opětovnému použití.

Jako způsob optimalizace procesu se vývojářům uděluje možnost odhlásit se z zdlouhavého procesu jednoduchým zadáním nového příznaku během přidělování haldy / zdroje. Dynamické přerozdělení by v zásadě mohlo minimalizovat povinný proces nulování všech dob a přidělit uvolněnou paměť, kterou procesy vývojáře používaly, aniž by ji nutila procesem nulování.



Microsoft již tyto nové příznaky přidal a nevyžadují nové ovladače. Kromě toho neexistuje žádný vyhrazený CheckFeatureSupport možnost pro tyto. V zásadě jsou tyto nové příznaky k dispozici kdykoli, když je vystaven ID3D12Device8, nebo je úspěšná kontrola D3D12_FEATURE_D3D12_OPTIONS7. Všechny nové příznaky vyžadují, aby vývojáři spouštěli procesy na verzi D3D12, která jim rozumí.

Značky Přímý X12 directx Microsoft Okna