DirectX 12 D3D12 iegūst jaunu funkciju, kas nodrošina lielāku kontroli pār atmiņas piešķiršanu vai nu GPU, vai arī procesoram dinamiski

Aparatūra / DirectX 12 D3D12 iegūst jaunu funkciju, kas nodrošina lielāku kontroli pār atmiņas piešķiršanu vai nu GPU, vai arī procesoram dinamiski 3 minūtes lasīts

DirectX 12



Gaidāmajā galvenajā Windows 10 OS atjauninājumā tiks iekļauts DirectX12 un, konkrētāk, Direct3D (D3D12) iegūt ne vienu, bet jaunus karodziņus kas mainīs veidu, kā tiek piešķirti atmiņas resursi. Šķiet, ka Microsoft ir pamatoti noraizējies par to, kā atmiņas un apstrādes jauda tiek pieprasīta un piešķirta lietojumprogrammām, kas bieži var radīt sašaurinājumu. Starp citu, šie jaunie karodziņi tieši neietekmēs atmiņu, bet drīzāk ietekmēs veidu, kā tā tiek piešķirta un pārvaldīta.

Microsoft ir aktīvi izstrādājusi DirectX platformas jaunāko atkārtojumu, kas ilgu laiku ir bijis vadošais standarts darbvirsmas spēlēm. Jaunākā Microsoft DirectX 12 versija pēdējā laikā iegūst vairākas jaunas funkcijas. Nesen mēs aplūkojām visredzamākās un svarīgākās DirectX 12 jaunās funkcijas kas ievērojami nāks par labu izstrādātājiem un lietotājiem. Šonedēļ Microsoft norādīja, ka nākamajam galvenajam Windows 10 atjauninājumam jāietver divi jauni DirectX12 Direct3D karodziņi. Interesanti, ka izstrādātājiem, kuri vēlas izpētīt to pašu šodien, no Windows Insider programmas vienkārši jāielādē un jāinstalē jaunākā Windows 10 Insider Preview un SDK Preview Build for Windows 10 (20H1).



Windows 10 DirectX 12 Direct3D, lai iegūtu divus jaunus karodziņus dinamiskai atmiņas sadalei starp procesoru un GPU:

Gaidāmajā Windows 10 atjauninājumā D3D12 pievienos divus jaunus karodziņus D3D12_HEAP_FLAG uzskaitījumam. Starp citu, šie jaunie karodziņi ir “nepastāvīgi” īpašumi. Vienkārši sakot, tas nozīmē, ka jaunie karodziņi tieši neietekmēs pašu iegūto atmiņu. Tā vietā jaunie karodziņi ietekmēs atmiņas piešķiršanas veidu. Turklāt šie karodziņi netiek atspoguļoti no ID3D12Heap :: GetDesc vai ID3D12Resource :: GetHeapProperties .



D3D12_HEAP_FLAG_CREATE_NOT_RESIDENT:

Pašreizējā atkārtojumā ikreiz, kad izstrādātājs pieprasa D3D piešķirt kaudzi vai piešķirto resursu, pēdējā lieta, kas notiek, pirms viņš atgūst objektu, ir atmiņa, kas tiek apdzīvota. Tas ir ļoti līdzīgs ID3D12Device :: MakeResident tiek veikta. Lieki piebilst, ka šāds process uzreiz rada divus jautājumus:



  1. Dizains bloķē CPU pavedienu, līdz atmiņa ir pilnībā gatava lietošanai. Šī nav ideāla vai vēlama situācija
  2. Šis process arī ļaus izstrādātājiem pārņemt atmiņu, pārsniedzot pašreizējā procesa budžetu, kas viņam jāizmanto.

Tikko pievienotā ID3D12Device3 :: EnqueueMakeResident ļauj lietotnēm izdarīt dažādas izvēles. Lietotnes varēja gaidīt rezidenci, izmantojot GPU, nevis CPU, vai arī pieprasīt rezidences darbības izgāšanos, nevis pārsniegt budžetu. Atmiņas piešķiršana nerezidentvalsts rezultātā dod priekšrocības pirmajai resursu izmantošanai.

D3D12_HEAP_FLAG_CREATE_NOT_ZEROED:

Šis karodziņš mēģina novērst nulles saturu, kas piesaistīja resursus un kaudzes, ko saņēma D3D jaunizveidotie. Korporācija Microsoft mēģināja optimizēt šo procesu, iespējojot vairāk atkārtotas atmiņas izmantošanu, kas nekad nav atstājusi attiecīgā procesa robežas bez nulles iestatīšanas. Tomēr tas nedarbojās labi un piespieda Microsoft inženierus atgriezties pie tikai nulles atmiņas. Lieki pieminēt, ka šis veids bija diezgan garlaicīgs, jo atmiņas pārvaldniekam ir skaidri jāieraksta atmiņā atmiņas, pirms tas to atdod izstrādātājiem atkārtotai izmantošanai.

Lai optimizētu procesu, izstrādātājiem tiek dota iespēja atteikties no garlaicīgā procesa, kaudzes / resursu piešķiršanas laikā vienkārši norādot jauno karodziņu. Būtībā dinamiskā pārdale varētu samazināt obligāto visu laiku nulles procesu un piešķirt nedaudz atbrīvotas atmiņas, ko izmantoja izstrādātāja procesi, nepiespiežot to atkārtotas nulles procesā.



Microsoft jau ir pievienojis šos jaunos karodziņus, un tiem nav nepieciešami jauni draiveri. Turklāt nav veltīta CheckFeatureSupport variants šiem. Būtībā šie jaunie karodziņi ir pieejami jebkurā laikā, kad tiek parādīts ID3D12Device8, vai arī pārbaude par D3D12_FEATURE_D3D12_OPTIONS7 ir veiksmīga. Visi jaunie karodziņi pieprasa, lai izstrādātājiem būtu jādarbojas procesiem ar D3D12 versiju, kas tos saprot.

Tagi Direct X12 DirectX Microsoft Windows