Ang DirectX 12 D3D12 ay Nakakakuha ng Bagong Tampok Aling Nagbibigay ng Higit Pang Pagkontrol sa Paglalaan ng Memory Sa Alinmang GPU O CPU Dynamically

Hardware / Ang DirectX 12 D3D12 ay Nakakakuha ng Bagong Tampok Aling Nagbibigay ng Higit Pang Pagkontrol sa Paglalaan ng Memory Sa Alinmang GPU O CPU Dynamically Basahin ang 3 minuto

DirectX 12



Sa paparating na pangunahing pag-update sa Windows 10 OS, ang DirectX12, at mas partikular, ang Direct3D (D3D12), ay magiging pagkuha ng hindi isa ngunit mga bagong watawat na babaguhin ang paraan ng paglalaan ng mga mapagkukunan ng memorya. Lumilitaw na wastong nag-aalala ang Microsoft tungkol sa paraan ng memorya at kapangyarihan sa pagpoproseso na hiniling at inilalaan sa mga application, na madalas na makakalikha ng isang bottleneck. Hindi sinasadya, ang mga bagong watawat na ito ay hindi direktang makakaapekto sa memorya, ngunit makakaapekto sa paraan ng paglalaan at pamamahala nito.

Aktibo na binuo ng Microsoft ang pinakabagong pag-ulit ng platform ng DirectX, na matagal nang nangungunang pamantayan para sa paglalaro ng desktop. Ang pinakabagong bersyon ng Microsoft DirectX 12 ay nakakakuha ng maraming mga bagong tampok nitong mga nakaraang araw. Kamakailan lamang ay sinakop namin ang pinaka kilalang at mahalagang mga bagong tampok sa DirectX 12 na makabuluhang makikinabang sa mga developer at end-user. Sa linggong ito, ipinahiwatig ng Microsoft ang susunod na pangunahing pag-update sa Windows 10 ay dapat magsama ng dalawang bagong mga flag para sa DirectX12 Direct3D. Kapansin-pansin, ang mga developer na nagnanais na galugarin ang pareho ngayon, kailangang i-download at mai-install lamang ang pinakabagong build ng 10 Insider Preview at SDK Preview Build para sa Windows 10 (20H1) mula sa Windows Insider Program.



Ang Windows 10 DirectX 12 Direct3D Upang Makakuha ng Dalawang Bagong Mga Flags Para sa Dynamic na Alokasyon ng Memory sa pagitan ng CPU at GPU:

Sa paparating na pag-update sa Windows 10, ang D3D12 ay magdaragdag ng dalawang bagong mga flag sa pag-enumerate ng D3D12_HEAP_FLAG. Hindi sinasadya, ang mga bagong watawat ay 'hindi permanenteng' mga katangian. Sa madaling salita, nangangahulugan ito na ang mga bagong watawat ay hindi direktang makakaapekto sa nagresultang memorya mismo. Sa halip, makakaapekto ang mga bagong watawat sa paraan ng paglalaan ng memorya. Bukod dito, ang mga watawat na ito ay hindi masasalamin mula sa ID3D12Heap :: GetDesc o ID3D12Resource :: GetHeapProperties .



D3D12_HEAP_FLAG_CREATE_NOT_RESIDENT:

Sa kasalukuyang pag-ulit nito, tuwing ang isang developer ay humiling ng D3D na maglaan ng isang magbunton o nakatuong mapagkukunan, ang huling bagay na nangyari bago niya ibalik ang bagay ay ang memorya ay ginawang residente. Ito ay kapansin-pansin na katulad sa ID3D12Device :: MakeResident ginagawa. Hindi na kailangang idagdag, ang nasabing proseso ay nagpapakita ng dalawang isyu kaagad:



  1. Hinaharang ng disenyo ang isang CPU Thread hanggang sa ganap na handang magamit ang memorya. Hindi ito isang perpekto o nais na sitwasyon
  2. Papayagan din ng proseso ang mga developer na mag-overcommit ng memorya, lampas sa kung ano ang ipinahihiwatig ng kasalukuyang badyet ng proseso na dapat niyang gamitin.

Ang bagong idinagdag ID3D12Device3 :: EnqueueMakeResident Pinapayagan ang mga app na gumawa ng iba't ibang mga pagpipilian. Maaaring maghintay ang mga app para sa paninirahan gamit ang GPU sa halip na ang CPU o hilingin ang pagpapatakbo ng paninirahan upang mabigo sa halip na mag-over-budget. Ang paglalaan ng memorya sa isang hindi residente na estado ay nagreresulta sa pagbibigay ng parehong mga benepisyo sa unang paggamit ng mga mapagkukunan.

D3D12_HEAP_FLAG_CREATE_NOT_ZEROED:

Sinusubukan ng watawat na ito na tugunan ang mga zero na nilalaman na nakatuon sa mga mapagkukunan at tambak na bagong nilikha ng natanggap na D3D. Sinubukan ng Microsoft na i-optimize ang prosesong ito sa pamamagitan ng pagpapagana ng higit na muling paggamit ng memorya na hindi kailanman naiwan ang mga limitasyon ng isang naibigay na proseso nang walang pag-zero. Gayunpaman, hindi ito gumana nang maayos at pinilit ang mga inhinyero ng Microsoft na bumalik sa pagbabalik lamang ng zero na memorya. Hindi na banggitin, sa ganitong paraan ay medyo nakakapagod dahil ang memorya ng manager ay kailangang malinaw na isulat ang zero sa memorya bago ito ibalik sa mga developer para magamit muli.

Bilang isang paraan upang ma-optimize ang proseso, binibigyan ang mga developer ng kakayahang mag-opt-out sa nakakapagod na proseso sa pamamagitan lamang ng pagtukoy sa bagong watawat sa panahon ng paglalaan ng heap / mapagkukunan. Mahalaga, ang dinamiko na muling paglalaan ay maaaring mabawasan ang ipinag-uutos na lahat-ng-oras na proseso ng pag-zero, at maglaan ng ilang napalaya na memorya na ginagamit ng mga proseso ng developer nang hindi pinipilit ito sa proseso ng re-zero.



Naidagdag na ng Microsoft ang mga bagong flag na ito at hindi sila nangangailangan ng mga bagong driver. Bukod dito, walang nakatuon CheckFeatureSupport pagpipilian para sa mga ito. Mahalaga, ang mga bagong flag na ito ay magagamit anumang oras na ang ID3D12Device8 ay nakalantad, o isang tseke para sa D3D12_FEATURE_D3D12_OPTIONS7 magtagumpay. Ang lahat ng mga bagong hiling sa watawat ay ang pagpapatakbo ay dapat na nagpapatakbo ng mga proseso sa isang bersyon ng D3D12 na nauunawaan ang mga ito.

Mga tag Direkta X12 direkta Microsoft Windows