Článek
V menu přepnete textury z High na Ultra. Benchmark ukáže skoro stejné průměrné FPS, takže to vypadá jako nastavení „zadarmo“. Pak se rozběhnete do nové části mapy, kamera se otočí a obraz na zlomek sekundy škubne.
Tohle není automaticky důkaz, že hra „má málo výkonu“. U textur se velmi často řeší jiný limit než čistý výpočet shaderů: kolik potřebných dat může zůstat fyzicky dostupných GPU ve vhodné paměti.
Velká textura stojí hlavně místo
Vyšší kvalita textur znamená větší množství texelových dat, často více nebo větší mip-map úrovně a větší paměťový tlak. Samotné vzorkování textury ale nemusí být o tolik výpočetně dražší, aby dramaticky snížilo průměrnou snímkovou frekvenci.
Proto může přepnutí High → Ultra v jedné scéně změnit průměr třeba jen málo. GPU zvládá stejnou geometrii a podobné shadery, jen pracuje s větším objemem obrazových dat.
VRAM není jen číslo na krabici. Windows pracuje s rozpočtem
V Direct3D 12 existuje pojem residency budget - množství fyzické video paměti, které má proces v danou chvíli cílit. Microsoft upozorňuje, že tento rozpočet může kolísat podle aktivity systému a dalších aplikací.
To znamená, že hra nemusí mít garantováno přesně tolik volné VRAM, kolik stojí na specifikaci grafické karty. Část paměti používá systém, compositor, další programy nebo samotné zdroje hry, které nejsou textury.
Resident znamená: GPU k tomu může právě teď sáhnout
Microsoft označuje objekt za resident tehdy, když je přístupný GPU. Pokud se hra dostane pod tlak paměťového rozpočtu, některé zdroje musí uvolnit, přesunout nebo znovu zpřístupnit.
U diskrétní grafiky může v krajním případě dojít k přesunům mezi rychlou lokální video pamětí a pomalejší systémovou pamětí. Microsoft přímo varuje, že nesprávný zdroj umístěný v systémové paměti může vážně poškodit snímkovou frekvenci.
Průměr FPS může vypadat dobře a frametime přitom dostane ránu
Průměrná snímková frekvence je průměr přes delší úsek. Jedna krátká pauza se v ní může ztratit. Frametime graf ale takovou událost ukáže jako ostrou špičku.
Struktura DXGI_QUERY_VIDEO_MEMORY_INFO má kromě aktuálního využití i hodnotu Budget. Microsoft u ní výslovně uvádí, že pokud CurrentUsage překročí Budget, aplikace může utrpět stuttering nebo další výkonnostní penalizace, protože operační systém musí dělit zdroje mezi více procesů.
Právě proto může být situace paradoxní: většinu času běží hra na 120 FPS, ale při streamování nové oblasti přijde krátké zaškobrtnutí. Ne proto, že GPU neumí spočítat 120 snímků za sekundu, ale proto, že některá data zrovna nejsou tam, kde je GPU potřebuje.
„VRAM usage 11,8 GB“ ještě neznamená, že 12GB karta je mrtvá
Monitoring navíc umí být zrádný. Hry často alokují nebo rezervují více paměti, než aktivně potřebují v každém snímku. Číslo „allocated“ proto není totéž co skutečný pracovní set ani automatický důkaz, že karta fyzicky narazila na strop.
Stejně tak vysoké využití VRAM nemusí být chyba. Pokud hra dokáže volnou paměť využít jako cache, je často lepší ji využít než ji nechat prázdnou.
Proto má smysl sledovat současně chování hry, frametimes, konkrétní nastavení, rozpočet paměti a opakovatelnost problému - ne jen jedno číslo v overlayi.
A ne každý stutter je VRAM stutter
Tohle je druhá povinná brzda. Hra může škubat kvůli kompilaci shaderů, načítání dat ze SSD, CPU bottlenecku, garbage collectoru, síti, antiviru, ovladači nebo obyčejné chybě enginu.
Samotný fakt, že snížení textur pomohlo, je silná indicie paměťového tlaku, ale pořád ne laboratorní důkaz. Texturové nastavení může ovlivnit i streaming a jiné části enginu.
Proč se tedy textury někdy jeví skoro „zadarmo“
Dokud se potřebná data pohodlně vejdou do dostupného paměťového rozpočtu a hra je dobře spravuje, vyšší textura nemusí zásadně měnit počet výpočtů na snímek. Proto průměr FPS zůstane podobný.
Jakmile ale větší textury začnou vytlačovat jiné zdroje nebo vynucovat častější přesuny, problém se nemusí projevit jako hezky lineární pokles 120 → 100 FPS. Může přijít jako série krátkých špiček frametime.
Takže věta „Ultra textury mě stojí jen dvě FPS“ může být pravda - a současně nemusí vyprávět celý příběh. U VRAM je někdy důležitější otázka, co se stane v nejhorší sekundě, než jak vypadá průměr za celou minutu.
Zdroje






