„DirectX 12 D3D12“ gauna naują funkciją, kuri suteikia daugiau galimybių kontroliuoti atminties paskirstymą GPU ar procesoriui dinamiškai

Aparatinė įranga / „DirectX 12 D3D12“ gauna naują funkciją, kuri suteikia daugiau galimybių kontroliuoti atminties paskirstymą GPU ar procesoriui dinamiškai 3 minutes perskaityta

„DirectX 12“



Būsimame pagrindiniame „Windows 10“ OS atnaujinime bus pristatyta „DirectX12“ ir, konkrečiau, „Direct3D“ (D3D12). gauti ne vieną, bet naujas vėliavas tai pakeis atminties išteklių paskirstymo būdą. Panašu, kad „Microsoft“ yra pagrįstai susirūpinęs dėl atminties ir apdorojimo galios prašymo ir paskirstymo programoms, o tai dažnai gali sukelti kliūtį. Beje, šios naujos vėliavos neturės tiesioginės įtakos atminčiai, veikiau jos paskirstymo ir valdymo būdui.

„Microsoft“ aktyviai kūrė naujausią „DirectX“ platformos iteraciją, kuri jau seniai yra pagrindinis kompiuterinių žaidimų standartas. Naujausia „Microsoft DirectX 12“ versija pastaruoju metu gauna keletą naujų funkcijų. Neseniai aptarėme ryškiausios ir svarbiausios naujos „DirectX 12“ funkcijos tai būtų labai naudinga kūrėjams ir galutiniams vartotojams. Šią savaitę „Microsoft“ nurodė, kad kitame pagrindiniame „Windows 10“ atnaujinime turėtų būti dvi naujos „DirectX12 Direct3D“ žymos. Įdomu tai, kad kūrėjai, norintys ištirti tą patį šiandien, iš „Windows Insider“ programos turi tiesiog atsisiųsti ir įdiegti naujausią „Windows 10 Insider Preview“ ir „SDK Preview Build for Windows 10“ (20H1).



„Windows 10 DirectX 12 Direct3D“ norint gauti dvi naujas vėliavas, skirtas dinaminiam atminties paskirstymui tarp procesoriaus ir GPU:

Būsimame „Windows 10“ naujinime D3D12 prie D3D12_HEAP_FLAG sąrašo pridės dvi naujas žymes. Beje, šios naujos vėliavos yra „nuolatinės“ savybės. Paprasčiau tariant, tai reiškia, kad naujos vėliavos tiesiogiai nepaveiks pačios gautos atminties. Vietoj to, naujos žymos paveiks atminties paskirstymo būdą. Be to, šios vėliavos neatsispindi ID3D12Heap :: GetDesc arba ID3D12Resource :: GetHeapProperties .



D3D12_HEAP_FLAG_CREATE_NOT_RESIDENT:

Pagal dabartinę iteraciją, kai kūrėjas paprašo D3D paskirstyti krūvą ar skirtą šaltinį, paskutinis dalykas, įvykęs prieš jam grąžinant objektą, yra atmintis. Tai nepaprastai panašu į ID3D12Device :: MakeResident atliekami. Nereikia nė pridurti, kad toks procesas iš karto pateikia du klausimus:



  1. Dizainas blokuoja procesoriaus giją, kol atmintis bus visiškai paruošta naudoti. Tai nėra ideali ar pageidaujama situacija
  2. Šis procesas taip pat leis kūrėjams per daug atminti, viršijant dabartinį proceso biudžetą, kurį jis turėtų naudoti.

Naujai pridėta ID3D12Device3 :: EnqueueMakeResident leidžia programoms pasirinkti skirtingai. Programos galėjo laukti rezidencijos naudodamos GPU, o ne procesorių, arba prašyti, kad rezidentūros operacija žlugtų, o ne per daug. Atminties paskirstymas nerezidentinėje valstybėje lemia pirmojo išteklių naudojimo naudą.

D3D12_HEAP_FLAG_CREATE_NOT_ZEROED:

Ši vėliava bando pašalinti nulinį turinį, kuris skyrė išteklius ir kaupas, gautas naujai D3D. „Microsoft“ bandė optimizuoti šį procesą įgalindama daugiau pakartotinio naudojimo atminties, kuri niekada nebuvo palikta tam tikro proceso ribų, nenukreipiant nulio. Tačiau tai neveikė gerai ir privertė „Microsoft“ inžinierius grįžti tik į nulio atmintį. Nereikia nė paminėti, kad šis būdas buvo gana varginantis, nes atminties tvarkyklė turi aiškiai įrašyti nulius į atmintį, kol ji grąžins ją kūrėjams pakartotiniam naudojimui.

Kaip būdas optimizuoti procesą, kūrėjams suteikiama galimybė atsisakyti varginančio proceso paprasčiausiai nurodant naują vėliavą paskirstant kaupą / išteklius. Iš esmės, dinaminis perskirstymas galėtų sumažinti privalomą visų laikų nulio nustatymo procesą ir paskirstyti tam tikrą atlaisvintą atmintį, kurią kūrėjo procesai naudojo, nepriversdami jos per naujo nulio procesą.



„Microsoft“ jau pridėjo šias naujas žymes ir joms nereikia naujų tvarkyklių. Be to, nėra dedikuoto „CheckFeatureSupport“ pasirinkimas. Iš esmės šios naujos žymos yra prieinamos bet kuriuo metu, kai bus parodytas „ID3D12Device8“, arba patikrinus D3D12_FEATURE_D3D12_OPTIONS7 pavyks. Naujos vėliavos reikalauja, kad kūrėjai vykdytų procesus naudodamiesi juos suprantančia D3D12 versija.

Žymos Tiesioginis X12 tiesioginis „Microsoft“ „Windows“