Megint ferde szemmel nézünk DirectStorage-re, pedig most is csak a dolgát teszi

A Monster Hunter Wilds PC-s portjátnak állítólagos gondját elemezte a Digital Foundry.

Úgy néz ki, hogy idén rájár a rúd a DirectStorage-re, ugyanis nemrég az új Spider-Man kapcsán kapta az ívet, most pedig a Monster Hunter Wilds PC-s portján belül varrt a nyakába egy hibaként tárgyalt jelenséget a Digital Foundry.

Valójában azonban most is tervszerűen működik a DirectStorage, ahogy tehát a Spider-Manben, úgy a Monster Hunter Wilds című játékban is azt teszi, amire tervezték, és a gondnak kikiáltott jelenség valójában az API rendeltetésszerű működése.

Hirdetés

A konkrétumokat tekintve a Digital Foundry arra panaszkodik, hogy ha a játékos fordítja a kamerát, akkor némileg visszaesik a képkockasebesség, majd pár másodperc múlva helyreáll. Most tekintsünk el a Monster Hunter Wilds egyéb jellegzetességeitől, lehet rá mondani, hogy vannak problémák a textúraminőséggel, amin egyébként javít egy külön letölthető textúracsomag, illetve talán a grafikai minőség sem annyira erős a hardverigényhez viszonyítva, de a fenti videóban látható időszakos sebességvesztés valójában reális, így része a normál működésnek.

Lassulás a kameramozgásra AMD, Intel és NVIDIA VGA-valLassulás a kameramozgásra AMD, Intel és NVIDIA VGA-valLassulás a kameramozgásra AMD, Intel és NVIDIA VGA-val Lassulás a kameramozgásra AMD, Intel és NVIDIA VGA-val (forrás: Digital Foundry YouTube) [+]

Ez azért következik be, mert amikor fordul a kamera, akkor a program igyekszik figyelembe venni azt, hogy milyen textúrák betöltésére lehet szükség hamarosan. Ezeket az alkalmazás tömörítve tárolja, és a GPU-n történik meg a dekódolásuk. Vagyis a kamera mozgásával párhuzamosan a rendszer elkezdi a potenciálisan hasznosítható textúrák kitömörítését, és az ezzel járó munka elveszi a számítási teljesítmény egy részét az általános grafikai számításoktól. Bár maga a folyamat aszinkron compute és copy mellett valósul meg, a hardverre mindenképpen extra terhelést jelent, így tulajdonképpen a kameramozgás okkal lassít a feldolgozáson, majd ha a felhasználó huzamosabb ideig egy adott területet néz, akkor a rendszer mentesül a kitömörítéssel járó feladatok alól, így több erőforrás jut a valós grafikai számításokra.

Bármennyire is furcsa tehát a videóban tapasztalt jelenség, amely GeForce, Radeon és Arc GPU-kon is jelen van, teljesen tervszerű, logikusan megmagyarázható, sőt, konkrétan így kell működnie a DirectCompute API-nak.

Jelentős akadás NVIDIA GPU-val
Jelentős akadás NVIDIA GPU-val (forrás: Digital Foundry YouTube) [+]

Ami viszont nem tervszerű, és nem a DirectStorage normális működésének a része, azok az NVIDIA GPU-kon bekövetkező jelentős akadások, amennyiben a VRAM kapacitása szűkös a beállított textúrarészletességnek. Ezek már nem abból erednek, hogy a GPU-nak extra munkája van a kitömörítéssel, hanem az API meghajtó- és hardveroldali implementációjából. Az adatok másolásáért felelős parancsmotornak komoly szerepe van a DirectStorage működésében, és ebből a szempontból igen nagy az eltérés az egyes gyártók hardverdizájnjai között. A GeForce-ok gyorsan telíteni tudják a PCI Express buszt, és ha ez a képszámítás során valamikor megtörténik a másolási feladatokkal, akkor a CPU oldaláról addig nem tud eljutni egyetlen parancs sem a GPU-hoz, amíg nem kerülnek végrehajtásra a másolási feladatok. Az esetenként bekövetkező akadást tulajdonképpen ez okozza, mivel ilyenkor egy jó darabig csak adatmásolással járó feladattal foglalkozhat maga a hardver. Az AMD és az Intel ezt másképp csinálja, ugyanis a GPU felé kisebb, egyenletesebb adatfolyamokat küldenek, így az adatmásolások mellett továbbított parancsfolyamok ezek között, a prioritásuk révén átjutnak, vagyis maga az adatmásolás nem függesztheti fel huzamosabb időre a többi munkát a GPU-n belül.

Azt nem tudni, hogy ezen az utóbbi problémán lehet-e javítani. Maga a DirectStorage API nem teszi lehetővé a különböző parancsfolyamok manuális ütemezését, tehát a GeForce GPU-kon tapasztalható akadások megszüntetése a program oldaláról nem lehetséges. Ugyanakkor a meghajtóoldali implementációt tekintve viszonylag sok trükköt lehet alkalmazni az adott adatfolyam kényszerített megakasztását tekintve, így nem lehet kizárni, hogy az NVIDIA kitalál majd erre valamit. Ezek miatt viszont a DirectStorage-et nem éri meg piszkálni, ez az API itt is azt teszi, amire tervezték, se többet, se kevesebbet.

Azóta történt

Előzmények

Hirdetés