Uusimmat

Intelin työntekijältä ratkaisu DirectX 12 -suorituskykytestien ongelmiin

10.03.2016 15:04 Petrus Laine

Vaikeaselkoinen Event Trace for Windows

Suorituskykytestien ajaminen Microsoftin uudella DirectX 12 -rajapinnalla on aiheuttanut monille harmaita hiuksia. Rajusti uudistunut rajapinta kuuluu ns. matalan tason rajapintoihin, ja on niin erilainen aiempien DirectX-versioiden kanssa, että tutut testimetodit vaativat yhtä lailla rajuja uudistuksia.

Monet aiemmin käytetyistä työkaluista ei tue DirectX 12 -rajapintaa lainkaan ainakaan vielä. Esimerkiksi FRAPS, MSI Afterburner ja EVGA Precision ovat kaikki avuttomia, kun käytetty ohjelma käyttää aiempien DirectX-versioiden sijasta DirectX 12:ta.

FCAT tulkitsee ruutuajat väärin DWM:n kanssa

Viime vuosina suosituksi noussut FCAT on niin ikään ongelmissa uuden rajapinnan kanssa. Vaikka se kykeenekin edelleen mittaamaan ruutuaikoja tietyissä tilanteissa, se toimii vain, mikäli näytönohjain käyttää kuvien lähettämiseen eteenpäin DirectFlip-ominaisuutta Microsoftin suositteleman DWM:n sijasta. Tästä saatiin esimerkki aiemmissa Ashes of the Singularity -testeissä, kun AMD:n näytönohjaimet käyttivät Microsoftin suosittelemaa DWM:ää DirectFlipin sijasta, ja FCAT-tulokset näyttivät täysin järjettömiltä. AMD on lisännyt DirectFlip-tuen ajureihinsa tänään julkaistujen Radeon Software 16.3 -ajureiden myötä.

Erilaisten ongelmien vuoksi ainoat luotettavat suorituskykytestit DirectX 12 -rajapinnalla tähän asti ovat olleet eri pelien sisäänrakennetut testiohjelmat. Sisäänrakennetut testit ovat sinänsä toimiva metodi, mutta avaavat oven mahdollisille huijauksiksikin kuvailluille optimoineille, jotka koskevat vain sitä ennalta määriteltyä testiä eivätkä itse peliä. Asiasta on menneisyydessä nähty useampiakin esimerkkejä.

PerfMon antaa selkeät tulokset

Nyt Intelin Andrew Lauritzen on ratsastanut pelastavana enkelinä valkealla ratsullaan testiareenoille. Lauritzen julkaisi PresentMon-työkalun, joka mahdollistaa ruutuaikojen mittaamisen DirectX 12 -rajapinnalla riippumatta siitä, käyttääkö peli- tai näytönohjaimen ajurit kuvan lähettämiseen DWM:ää vai DirectFlippiä. PresentMon vaatii käyttäjältä pientä tee-se-itse-henkeä, sillä GitHubista saatava projekti pitää kääntää valmiiksi ohjelmaksi Visual Studio Express Community 2015 -ohjelmalla. Komentokehotteen kautta käytettävä ohjelma käyttää ruutuaikojen mittaamiseen Event Tracing for Windows -ominaisuutta, ja toimii DirectX 10-, 11.x- ja 12-rajapinnoilla. Event Trace for Windowsia voisi hyödyntää myös ilman PerfMonia, mutta kuten uutisen ensimmäisestä kuvasta näkee, sen antamat tulokset ovat helposti hyvin vaikeaselkoisia.

Tutustu PerfMoniin paremmin Tech Report -sivustolla, ja lataa PerfMonin Visual Studio -projektin GitHubista