Undersökning: Ger CrossFire flyt i BF4?
"Driver" AMD med oss? De påstår att Frame Pacing ger flyt i CrossFire, men det gör inte det. Jag har suttit här en stund nu och mätt renderingstider i BF4, och jag vill gärna ha hjälp med att tolka datan.
Om det är så att det är jag som gör något fel, upplys mig gärna om det, så kanske jag kan få lite spelglädje för mina 6500 grafikkronor.
———— Uppdateringslogg ————
2013-11-17 22:38 | Testresultat med Hyperthreading avstängt tillagda.
2013-11-18 09:05 | Förbättrad läsbarhet (blå trianglar och mer luft).
2013-11-19 00:30 | Testresultat med en ensam skärm, 60 Hz samt opatchad PCL tillagda (se Rond 2).
2013-11-19 21:07 | Testresultat med 90 Hz och 62 Hz tillagda (se Rond 3).
2013-11-23 01:49 | Testresultat med inställningar enligt diverse förslag tillagda (se Rond 4).
2013-11-26 21:00 | Testresultat med olika uppdateringsfrekvenser tillagda (se Fortsättning).
2013-11-30 19:40 | Video på testslingan tillagd (se Testmetod).
Testmetod
►► Specs
Core i7-2600K @ 4,6 GHz
ASRock Z68 Extreme3 Gen3
Corsair XMS3 Vengeance 2x8GB 1600MHz CL10
2x AMD Radeon HD 7970 @ stock
Corsair Force GT 120GB
Yamakasi Catleap Q270 2B (2560x1440 @ 110 Hz)
Windows 8.1
Catalyst 13.11 Beta v9.2
Varken CPU eller GPU når någonsin 80 °C.
Om ej annat anges gäller följande inställningar:
CrossFire: ON
Frame Pacing: ON
gametime.maxvariablefps 400
(annars cappas BF4 vid 200 fps)
Hyperthreading: ON
FOV: 90
Med Ultra menas preseten Ultra och inget annat, dvs inget fuskande med MSAA eller nånting.
►► Utförande
Alla tester gjordes genom att jag sprang två varv på en av mig bestämd slinga på Golmud Railway i Battlefield 4 (endast Domination eller TDM). Varje mätning tar exakt 120 sekunder, för då slutar Fraps mäta. En video på slingan finns HÄR. Jag springer två varv, men 60 sekunder (= ett varv) räcker gott för att mäta renderingstider.
Jag har använt FRAFS Bench Viewer för att visualisera datan. Till varje bild har jag skrivit en kommentar om den subjektiva upplevelsen.
OBS! När jag säger "ospelbart" menar jag för oss som är vana vid 120 Hz.
———— Rond 1 ————
Resultat
►► CrossFire ON, Frame Pacing ON
Här testar jag med CrossFire och Frame Pacing aktiverat, och ingen framerate cap (i praktiken). Detta är de inställningar man borde kunna spela med.
2560x1440 Ultra
Detta känns oerhört ryckigt och hackigt, trots en genomsnittlig framerate på 113 fps (vilket jag med ett ensamt kort uppfattar som väldigt mjukt och följsamt). Ospelbart.
1280x720 Low
Här känns det mjukt och bra. Jag snittar 264 fps och det verkar vara CPU som flaskar.
►► CrossFire ON, Frame Pacing ON, gametime.maxvariablefps 110
Här testar jag att cappa frameraten på 110 fps för att se vad som händer då.
OBS! I motsats till resten av testerna har jag här inte testat i 2560x1440 Ultra och 1280x720 Low, utan 2560x1440 High och 2560x1440 Low.
2560x1440 High
Trots att jag i princip konstant hade 110 fps var detta ospelbart.
2560x1440 Low
Detta är intressant! Trots att alla siffror är sämre än på High kunde jag inte uppfatta något stutter här.
►► CrossFire ON, Frame Pacing OFF
Vad händer när man slår av Frame Pacing?
2560x1440 Ultra
Detta är nedslående. Med Frame Pacing avstängt är det precis lika hackigt och ospelbart som med det aktiverat. Återkommer till detta längre ner. Här snittar jag 105 fps (vilket med ett ensamt kort innebär flyt), men det är – föga förvånande – ospelbart.
1280x720 Low
Återigen flyter det på bra när jag går ner till 1280x720 Low. Jag antar att det åtminstone delvis beror på att frameraten är så hög (snitt 263 fps) att även en halvering av den ger bra flyt.
►► CrossFire ON, Frame Pacing ON, Hyperthreading OFF
Kan Hyperthreading påverka renderingstiderna? Låt oss se!
2560x1440 Ultra
Lägre genomsnittlig framerate: 99 fps istället för 113. Något högre "0.1% of time". Subjektivt precis lika hackigt som utan HT.
1280x720 Low
Klart lägre snittframerate: 167 fps istället för 264. CPU:n arbetade verkligen 100 % hela tiden. Även här något högre "0.1% of time". Kände inte av något stutter.
►► CrossFire OFF (och därmed per automatik Frame Pacing OFF)
Jag måste förstås jämföra med hur ett ensamt kort presterar.
2560x1440 Ultra
Med ett ensamt kort snittar jag 51 fps, och jag upplever flyt motsvarande just 51 fps. Det är naturligtvis inte jämförbart med 110 fps, men jag vågar nog nästan hävda att det känns bättre än 110 fps med två kort – om man bortser från de i grafen synliga dipparna till 30-ish fps, vilka naturligtvis upplevs som bildspel.
1280x720 Low
Som förväntat helt perfekt flyt. När man snittar 176 fps med ett ensamt kort kan det nästan inte bli på något annat sätt.
Jämförelser
För att man lättare ska kunna se hur olika parametrar påverkar flytet har jag gjort ett slags VS Mode, där jag jämför ON med OFF för respektive funktion.
►► Frame Pacing ON vs OFF
Här är förstås CrossFire aktiverat (annars finns det inget som heter Frame Pacing).
2560x1440 Ultra, hela benchmarket
Man kan urskilja en liten skillnad i framerate, men det verkar som att Frame Pacing egentligen inte tillför så mycket. Båda graferna tyder på kraftig stuttering.
2560x1440 Ultra, maximal inzoomning
När vi zoomar in kan vi direkt bekräfta vad vi nyss såg: Frame Pacing ger något bättre framerate, men flytet är fortfarande katastrofalt.
►► Hyperthreading ON vs OFF
2560x1440 Ultra, maximal inzoomning
Hyperthreading gör ingen skillnad för flytet.
►► CrossFire ON vs OFF
Här är Frame Pacing aktiverat när CrossFire är det.
2560x1440 Ultra, hela benchmarket
Som vi kan se ger två kort dubbelt så bra siffror, men graferna visar tydligt att de inte återspeglar verkligheten. Ett ensamt kort visar ett oerhört mycket smalare band över hela testet. Det verkar också ge kraftigare dippar, men bortser man från dessa flyter det nog faktiskt bättre än med två kort. Man skulle kunna säga att 51 fps med ett ensamt kort motsvarar en film i 24 fps (inte perfekt flyt, men funkar för att varje frame är lika lång) medan 113 fps med två kort kan sägas motsvara en film i 48 fps, men där det varje sekund förekommer en frame som är 150 ms lång.
2560x1440 Ultra, maximal inzoomning
När vi zoomar in kan vi slå spiken i kistan: CrossFire är värdelöst för den som vill ha flyt i Battlefield 4.
Slutsats
Tyvärr kan jag inte göra annat än att konstatera att CrossFire är värdelöst om man vill spela Battlefield 4 med flyt. Det förvånar mig inte att alla proffs kör Nvidia och att zhrooms m.fl. vägrar AMD: Det verkar ju vara helt omöjligt att få en behaglig spelupplevelse.
Man brukar kalla fenomenet microstuttering, men jag vill istället kalla det megastuttering.
Nu hoppas jag att ni kan ta vid där jag slutar, och försöka hitta en lösning. Det är inte omöjligt att jag har klantat mig och missat nånting. Bidra därför gärna med mätningar och bedömningar som styrker såväl som dömer ut min slutsats.
Tills någon kan motbevisa mig vill jag bestämt säga:
Undvik CrossFire till varje pris!
Over and out.
———— Rond 2 ————
Nu ska jag gräva ner mig ännu djupare. Hädanefter görs alla mätningar i 2560x1440 om inget annat anges.
Resultat
►► Enbart EN skärm
Kan det möjligen spela någon roll att jag har en sidoskärm inkopplad?
Nej, det har uppenbarligen ingen betydelse. Det blev ingen skillnad i flyt när jag kopplade ur den.
►► 60 Hz; pixel clock limit EJ patchad
Kan det spela någon roll att drivrutinen är patchad av ToastyX för att tillåta en pixel clock på högre än 330 MHz över DVI (vilket krävs för att gå över 85 Hz)? Vi provar! Innan mätningen använde jag AMD/ATI Pixel Clock Patcher 1.2 för att återställa de patchade värdena till standard. Därefter startade jag om datorn, vilket ledde till att skärmen och BF4 automatiskt gick ner till 60 Hz.
Kors i taket! För första gången ser vi en betydande skillnad utan att slå av CrossFire. Det är förstås svårt att garantera korrektheten i en subjektiv bedömning, då jag nu spelar i 60 Hz, men jag tror att det flyter bättre.
►► 60 Hz; PCL patchad
För att ta reda på om det är själva patchningen av drivrutinen eller den höga uppdateringsfrekvensen som förstör flytet ska jag nu prova att patcha drivrutinen, men låta skärmen köras i 60 Hz. Jag tar för säkerhets skull helt bort profilen för 110 Hz ur CRU.
Ja, graferna visar tydligt att det verkar fungera bra även om PCL är patchad (kanske till och med bättre – gjorde två identiska tester för att verifiera resultatet). Boven ser i nuläget ut att vara just den höga uppdateringsfrekvensen. Det blir alltså till att testa med lägre.
Jämförelser
►► TVÅ skärmar vs EN skärm
Med lite vilja kan man möjligen uttyda en minimal skillnad, men den ligger inom felmarginalen och/eller är inte märkbar.
►► 110 Hz; PCL patchad vs 60 Hz; PCL patchad
Graferna talar för sig själva: Att patcha drivrutinen är tydligen OK, men att gå upp till 110 Hz krossar omedelbart alla försök till flyt.
►► 110 Hz; PCL patchad; CrossFire OFF vs 60 Hz; PCL patchad; CrossFire ON
Med uppdateringsfrekvensen reducerad till 60 Hz (men drivrutinen patchad) börjar CrossFire närma sig ett ensamt kort!
Slutsats
Intressant. När man går ner till 60 Hz får man renderingstider som nästan kan jämföras med dem hos ett ensamt kort.
I nästa rond ska jag undersöka om det finns någon "magisk gräns" över vilken det börjar stuttra, eller om stutteringen kanske förändras linjärt/kvadratiskt med ökningen av uppdateringsfrekvens.
Sov gott.
———— Rond 3 ————
Okej. Nu vet vi att 60 hz = bra renderingstider och 110 Hz = pinsamma. Men finns det någon "magisk gräns" och isåfall var? Det är dags att ta reda på det nu.
Resultat
►► 90 Hz; PCL patchad
Jag har mätt med 70, 80, 90 och 100 Hz, men att ladda upp resultaten från alla mätningarna skulle inte ge någonting vettigt. Men här är resultaten från 90 Hz som ett smakprov:
Lika katastrofala renderingstider som i 110 Hz. Och det var likadant i 70, 80 och 100 Hz.
►► 62 Hz; PCL patchad
Eftersom det inte blev bättre av att gå ner till 70 Hz ska jag nu mäta i 62 Hz.
Ni ser själva. 62 Hz ger detta helvetets virrvarr av streck upp och ner som vi CrossFire-ägare så djupt hatar och fruktar. (Kom ihåg att vi fick relativt fina renderingstider i 60 Hz.)
Enligt mina kalkyler borde en CrossFire-brygga klara 80 Hz i 2560x1440. Och den är specad att klara 2560x1600 @ 60 Hz, vilket kräver 8 % mer bandbredd än 2560x1440 @ 62 Hz. Så varför blir det så här? Kanske kan jag ta reda på det i nästa rond.
Jämförelser
►► 62 Hz; PCL patchad vs 60 Hz; PCL patchad
Slutsats
Nu vet vi allså att 60 Hz fungerar hyfsat bra, men går man upp till 62 Hz blir man slaktad av stuttering. Jag vet inte varför det är så här, då jag menar att en CrossFire-brygga inte borde börja flaska förrän vid drygt 80 Hz i den här upplösningen.
I nästa rond planerar jag att prova att köra med bara en CrossFire-brygga samt höja till 80 Hz med låst PCL.
Heja Sverige!
———— Rond 4 ————
Nu ska jag felsöka CrossFire-bryggorna samt prova dessa förslag.
Resultat
►► EN CrossFire-brygga
Jag har hela tiden haft två CF-bryggor anslutna, för att jag har läst att det behövs för 2560x1440 @ 120 Hz eller inte spelar någon roll och isåfall för att det är snyggare. Nu ska jag prova att bara ha en ansluten. Jag väljer då att ansluta den till de vänstra kontakterna (närmast videoutgångarna) på korten.
Det börjar bli jobbigt att rendera och posta resultat för varenda mätning, så jag nöjer mig med att konstatera att det blev exakt ingen skillnad när jag tog bort den högra CrossFire-bryggan.
►► Byte av CrossFire-brygga
Kan den ena bryggan vara trasig eller för gammal eller något? Jag provar att byta ut den mot den andra – fortfarande på de vänstra kontakterna.
Inte heller här blev det någon skillnad överhuvudtaget.
►► 1920x1080, 110 Hz, EN CF-brygga
Detta var ju bättre ja. Man ser fortfarande samma stutteringmönster, men magnituden är mindre.
►► 110 Hz, EN CF-brygga, VSync ON
Dags att prova med vsync, enligt förslag från Cameltotem.
Renderingstiderna blev ännu sämre, men ... jag kan inte förstå detta ... flytet upplevs som bättre. Relativt lite (= för mycket) input lag finns dock.
►► RadeonPro (VSync ON, 110 Hz, DFC 110), EN CF-brygga
I RadeonPro, under Tweaks, satte jag VSync control: Always on; Display refresh rate: 110 Hz; Dynamic Framerate Control: Keep up to 110 fps. Jag satte VSync till OFF i BF4 och stängde av Frame Pacing i Catalyst Control Center.
Jag tror jag får bättre flyt. Men frameratemätaren är inte låst vid 110, som den är vid ingame VSync, så det känns som att inställningarna inte går igenom.
Jag tror att jag är påverkad av diverse placebo-/noceboeffekter och kan därför inte dra någon vettig slutsats.
———— Fortsättning ————
Nu orkar jag inte dela in undersökningen så noggrant längre, så jag tänker bara fylla på med resultat, förslag och funderingar allt eftersom.
►► Olika uppdateringsfrekvenser, EN CF-brygga
Jag fick förslaget att prova med 30 Hz, så nu har jag gjort exakt samma mätning i 30, 58, 60 och 62 Hz. En CF-brygga. Frame Pacing ON. Vsync OFF. Radeon Pro avstängt.
2560x1440 Ultra
Ska man skratta eller gråta? Helt allvarligt. Är AMD endast kapabla att skapa någorlunda spelbart flyt om man kör sin skärm i exakt 60 Hz? Det ser onekligen ut så.
Skrivet med hjälp av Better SweClockers