Keresés

Új hozzászólás Aktív témák

  • Abu85

    HÁZIGAZDA

    válasz Bélaaaa #26821 üzenetére

    Két részre kell bontani ezt. A régebbi DX11 és idősebb, valamint az OpenGL API-k esetén az okozza a problémát, hogy drága a VRAM-ban törölni. Egyszerűen, ha egy nem használt allokációt töröl a driver, akkor az akkor terhelést ró a CPU-ra, hogy tuti akadni fog a program. Ezért bármennyire is haszontalan a régen betöltött adat, azt nem törlik, csak akkor, ha már végleg nincs más lehetőség. Emiatt a régi API-ra épülő programokban jellemzően a VRAM-ba töltött adatok fele, vagy rosszabb esetben a háromnegyede csak a helyet viszi, mert törölni túl drága.
    DX12/Vulkan alatt az alkalmazás törölheti a nem használt allokációt, és ez szerencsére olcsó, noha nem ingyenes, de tényleg elég kevés prociidővel megoldható. Gyakorlatilag a törlés már nem jár akadással, persze így is ésszel szabad csinálni. Itt a gondot az okozza, hogy nagyon nehéz jó menedzsmentet kialakítani specifikus, architektúrákhoz szabott optimalizálásokkal. Ezért sajnos az explicit API-k alatt előfordul, hogy egy csomó olyan adat kerül betöltésre, amiknek semmi haszna. Ezt hívják a VRAM szemetelésének. Itt a programok nagyon eltérnek. Például a Rise of the Tomb Raider elég rossz, mert 1-2 GB szemetet is betölt a fontos adatok mellé. A Sniper Elite 4 viszont nagyon jó, alig mérhető a betöltött szemét mennyisége, mindössze 100-200 MB körül van egy hosszabb játék után. Tehát alapvetően az explicit API-ban lehet alkotni, de nem mindenki tud. És ilyen formában az emberi tényező problémává válik.

    [ Szerkesztve ]

    Senki sem dől be a hivatalos szóvivőnek, de mindenki hisz egy meg nem nevezett forrásnak.

Új hozzászólás Aktív témák