DirectX 12 D3D12 obté una nova característica que atorga més control sobre l'assignació de memòria a la GPU o a la CPU dinàmicament

Maquinari / DirectX 12 D3D12 obté una nova característica que atorga més control sobre l'assignació de memòria a la GPU o a la CPU dinàmicament 3 minuts de lectura

DirectX 12



A la propera actualització important del sistema operatiu Windows 10, es publicarà el DirectX12 i, més concretament, el Direct3D (D3D12). aconseguint no una, sinó banderes noves que alterarà la manera com s’assignen els recursos de memòria. Sembla que Microsoft està preocupat amb raó per la forma en què la memòria i el poder de processament són sol·licitats i assignats a les aplicacions, que sovint poden crear un coll d'ampolla. Per cert, aquestes noves marques no afectaran directament la memòria, sinó que afectaran la manera com s’assigna i es gestiona.

Microsoft ha estat desenvolupant activament la versió més recent de la plataforma DirectX, que ha estat durant molt de temps un estàndard líder en jocs d'escriptori. Darrerament, l’última versió de Microsoft DirectX 12 ha tingut diverses funcions noves. Recentment hem cobert el novetats més importants i importants de DirectX 12 cosa que beneficiaria significativament els desenvolupadors i els usuaris finals. Aquesta setmana, Microsoft va indicar que la propera actualització principal de Windows 10 hauria d’incloure dues marques noves per al DirectX12 Direct3D. Curiosament, els desenvolupadors que vulguin explorar el mateix avui en dia, només han de descarregar i instal·lar la versió més recent de Windows 10 Insider Preview i SDK Preview Build per a Windows 10 (20H1) del programa Windows Insider.



Windows 10 DirectX 12 Direct3D obtindrà dos indicadors nous per a l'assignació de memòria dinàmica entre la CPU i la GPU:

A la propera actualització de Windows 10, D3D12 afegirà dos indicadors nous a l’enumeració D3D12_HEAP_FLAG. Per cert, aquestes noves banderes són propietats 'impermanents'. En poques paraules, això significa que les noves marques no afectaran directament la memòria resultant. En canvi, els nous indicadors afectaran la manera com s’assigna la memòria. A més, aquestes banderes no es reflecteixen ID3D12Heap :: GetDesc o bé ID3D12Resource :: GetHeapProperties .



D3D12_HEAP_FLAG_CREATE_NOT_RESIDENT:

A la seva iteració actual, sempre que un desenvolupador sol·licita a D3D que assigni un recurs de memòria o un compromís, l'últim que passa abans de recuperar l'objecte és que la memòria es fa resident. Això és notablement similar a ID3D12Device :: MakeResident que s’està realitzant. No cal afegir que aquest procés presenta dos problemes immediatament:



  1. El disseny bloqueja un fil de CPU fins que la memòria estigui completament preparada per utilitzar-la. No és una situació ideal ni desitjada
  2. El procés també permetrà als desenvolupadors excedir la memòria, més enllà del que el pressupost del procés actual indica que hauria d’utilitzar.

El recentment afegit ID3D12Device3 :: EnqueueMakeResident permet a les aplicacions prendre diferents decisions. Les aplicacions podrien esperar la residència mitjançant la GPU en lloc de la CPU o sol·licitar que l’operació de residència fallés en lloc d’excedir el pressupost. L’assignació de memòria en un estat no resident resulta en la transmissió d’avantatges tant per al primer ús de recursos.

D3D12_HEAP_FLAG_CREATE_NOT_ZEROED:

Aquest indicador intenta abordar els continguts a zero que han rebut recursos i munts compromesos recentment creats per D3D. Microsoft va intentar optimitzar aquest procés habilitant més memòria de reutilització que mai havia deixat els límits d’un procés determinat sense fer zero. Tot i això, això no va funcionar bé i va obligar els enginyers de Microsoft a tornar només a retornar memòria a zero. No cal esmentar que aquesta manera era força tediós ja que el gestor de memòria ha d’escriure explícitament zeros a la memòria abans de tornar-los als desenvolupadors per a la seva reutilització.

Com a forma d’optimitzar el procés, se’ls atorga als desenvolupadors la possibilitat de desactivar el procés tediós simplement especificant el nou indicador durant l’assignació de recursos / pila. Essencialment, la reassignació dinàmica podria minimitzar el procés obligatori de reducció a zero de tots els temps i assignar una mica de memòria alliberada que els processos del desenvolupador utilitzaven sense forçar-la durant el procés de re-zero.



Microsoft ja ha afegit aquestes noves marques i no requereixen nous controladors. A més, no hi ha cap dedicat CheckFeatureSupport opció per a aquests. Bàsicament, aquests nous indicadors estan disponibles sempre que s’exposi ID3D12Device8 o bé es comprovi si hi ha D3D12_FEATURE_D3D12_OPTIONS7. Tot el que demanen els nous indicadors és que els desenvolupadors hagin d’executar processos en una versió de D3D12 que els entengui.

Etiquetes Directe X12 directx Microsoft Windows