DirectX 12 D3D12 получава нова функция, която дава по-голям контрол върху разпределението на паметта или за графичен процесор, или за динамичен процесор

Хардуер / DirectX 12 D3D12 получава нова функция, която дава по-голям контрол върху разпределението на паметта или за графичен процесор, или за динамичен процесор 3 минути четене

DirectX 12



В предстоящата голяма актуализация на Windows 10 OS, DirectX12 и по-точно Direct3D (D3D12) ще бъде получаване не на едно, а на нови знамена което ще промени начина на разпределение на ресурсите на паметта. Изглежда Microsoft е основателно загрижен за начина, по който паметта и процесорната мощност се изискват и разпределят на приложения, които често могат да създадат пречка. Между другото, тези нови флагове няма да окажат пряко влияние върху паметта, а по-скоро ще повлияят на начина, по който тя се разпределя и управлява.

Microsoft активно развива най-новата итерация на платформата DirectX, която отдавна е водещ стандарт за настолни игри. Най-новата версия на Microsoft DirectX 12 напоследък получава няколко нови функции. Наскоро покрихме най-важните и важни нови функции на DirectX 12 което би било от голяма полза за разработчиците и крайните потребители. Тази седмица Microsoft посочи, че следващата голяма актуализация на Windows 10 трябва да включва два нови флага за DirectX12 Direct3D. Интересното е, че разработчиците, които искат да изследват същото днес, трябва просто да изтеглят и инсталират най-новата версия на Windows 10 Insider Preview и SDK Preview Build за Windows 10 (20H1) от програмата Windows Insider.



Windows 10 DirectX 12 Direct3D, за да получи две нови знамена за динамично разпределение на паметта между CPU и GPU:

В предстоящата актуализация на Windows 10, D3D12 ще добави два нови флага към изброяването на D3D12_HEAP_FLAG. Между другото, тези нови знамена са „непостоянни“ свойства. Просто казано, това означава, че новите флагове няма да повлияят пряко на самата получена памет. Вместо това новите флагове ще повлияят на начина на разпределяне на паметта. Освен това тези знамена не са отразени от ID3D12Heap :: GetDesc или ID3D12Resource :: GetHeapProperties .



D3D12_HEAP_FLAG_CREATE_NOT_RESIDENT:

В текущата си итерация, когато разработчик поиска от D3D да разпредели купчина или ангажиран ресурс, последното нещо, което се случва, преди да върне обекта, е паметта да стане резидентна. Това е забележително подобно на ID3D12Device :: MakeResident се изпълнява. Излишно е да добавям, че този процес представя два въпроса веднага:



  1. Дизайнът блокира нишка на процесора, докато паметта е напълно готова за използване. Това не е идеална или желана ситуация
  2. Процесът също така ще позволи на разработчиците да прекалят паметта, надхвърляща текущия бюджет на процеса, който той посочва, че трябва да използва.

Новодобавената ID3D12Device3 :: EnqueueMakeResident позволява на приложенията да правят различни избори. Приложенията могат да изчакат пребиваване, използвайки GPU, а не CPU, или да поискат операцията по пребиваване да се провали, вместо да надхвърля бюджета. Разпределението на паметта в нерезидентно състояние води до предоставяне на двете предимства при първото използване на ресурси.

D3D12_HEAP_FLAG_CREATE_NOT_ZEROED:

Този флаг се опитва да адресира нулево съдържание, което е ангажирало ресурси и купчини, новосъздадени от D3D, получени. Microsoft се опита да оптимизира този процес, като даде възможност за повече повторна употреба на паметта, която никога не е напускала границите на даден процес без нулиране. Това обаче не работи добре и принуди инженерите на Microsoft да се върнат към връщането само на нулирана памет. Излишно е да споменавам, че този начин беше доста досаден, тъй като мениджърът на паметта трябва изрично да запише нули в паметта, преди да я върне на разработчиците за повторна употреба.

Като начин за оптимизиране на процеса, разработчиците получават възможността да се откажат от досадния процес, като просто посочат новия флаг по време на разпределението на купчина / ресурс. По същество динамичното преразпределение може да сведе до минимум задължителния процес за нулиране за всички времена и да разпредели малко освободена памет, която процесите на разработчика са използвали, без да го принуждава през процеса на повторно нулиране.



Microsoft вече е добавил тези нови знамена и те не изискват нови драйвери. Освен това няма специален CheckFeatureSupport опция за тях. По същество тези нови флагове са налични по всяко време, когато ID3D12Device8 е изложен, или проверката за D3D12_FEATURE_D3D12_OPTIONS7 е успешна. Всичко, което се изисква от новите флагове, е, че разработчиците трябва да изпълняват процеси на версия на D3D12, която ги разбира.

Етикети Директно X12 directx Microsoft Windows