Anslut till Senaste Tekniska Nyheter, Bloggar, Recensioner

Bygga ett bättre (Linux) GPU-riktmärke

Introduktion

För dem som följer våra Linux-recensioner har vi gjort stora framsteg under de senaste två månaderna. Vår benchmarking har förbättrats, vår grafmotor är i toppklass och vi arbetar nära med alla stora tillverkare för att ge våra läsare en definitiv resurs för Linux-hårdvara. Idag vill vi presentera alla för våra GPU Linux-riktmärken och hur vi kommer att köra dem i framtiden. Det här är inte en jämförande analys ännu, men vi kommer inte att låta dig vänta länge på det.

Den vidhängande bristen med varje riktmärke är att du, läsaren, bara får ett urval av data – både ingenjörer och statistiker kallar detta “datakomprimering”. När vi samplar data från en tidsdemo och formaterar den till en genomsnittlig bildrutor per sekund, förlorar vi all slags värdefull data, som vad de lägsta bilderna per sekund var, vad den högsta var, när den största nedgången i FPS hade inträffat, hur bilden såg ut, och listan fortsätter. Det har gjorts några försök att förmedla mer än bara en genomsnittlig FPS i videoriktmärken, framför allt med FRAPS. FRAPS tar inte helt upp frågan om reproducerbarhet och FRAPS körs endast på Windows.

Lyckligtvis har vi fått några mycket begåvade programmerare som arbetat med oss ​​för att bygga ett benchmarking-verktyg som liknar FRAPS (på Linux) som vi så småningom kan överföra till Windows också. Betrakta detta som vårt experiment med att utveckla våra benchmarkingmetoder samtidigt som vi använder Linux som vårt försökskanin. Så småningom räknar vi med att släppa riktmärket komplett med källa till allmänheten.

Så här fungerar vårt verktyg, som förklarats av den ledande utvecklaren, Wiktor Kopec.

“Programmet beräknar bilder per sekund för en applikation som använder OpenGL eller SDL. Det tar också skärmdumpar med jämna mellanrum och skapar en överlagring för att visa aktuell FPS/tid.

“Detta åstadkoms genom att definiera en anpassad SwapBuffers-funktion. För körbara filer som är länkade till GL vid kompilering, används miljövariabeln LD_PRELOAD för att anropa den anpassade SwapBuffers-funktionen. För körbara filer som använder körtidslänkning – vilket verkar vara fallet för de flesta spel – en kopia av binären görs, och alla referenser till libGL och den ursprungliga glXSwapBuffers-funktionen ersätts av referenser till vårt bibliotek och den anpassade SwapBuffers-funktionen. En liknande procedur görs för SDL. Vi kan sedan göra alla beräkningar på rambufferten eller helt enkelt dumpa ramen efter behag.”

Du kan läsa mer om SDL och OpenGL. SDL är ett “nyare” bibliotek med de senaste Linux-spelen (Medal of Honor: AA, Unreal Tournament 2004). På många sätt beter sig SDL väldigt likt DirectX för Linux, men använder OpenGL för 3D-acceleration.