Miesięczne archiwum: Lipiec 2014

Test Sniper Elite V2

Ustawienia graficzne:

  • Internal – rozdzielczość 1366×768
  • external – rozdzielczość 1920×1080

Sniper Elite V2 egpu test ustawienia 1Sniper Elite V2 egpu test ustawienia 2

Benchmark:

Misja z prologu. W czasie rozgrywki kilka przerywników filmowych na silniku gry.

Sniper Elite V2 egpu test benchmark 1 Sniper Elite V2 egpu test benchmark 2 Sniper Elite V2 egpu test benchmark 3 Sniper Elite V2 egpu test benchmark 4

Wyniki:

  • internal – wykres czerwony
  • external – wykres zielony

sniper elite v2 egpu test wyniki

Wnioski i spostrzeżenia:

  • test został przeprowadzony na najwyższych ustawieniach graficznych
  • dla externala możemy zaobserwować jedno z najniższych obciążeń szyny z dotychczas przetestowanych gier; dla internala wykorzystanie szyny jest wysokie
  • uzyskany fps w przedziale 50-70 w zupełności wystarczył do komfortowej gry
  • warto zwrócić też uwagę na niższe wykorzystanie CPU oraz GPU dla internala

Końcowa ocena jest jednoznaczna – Sniper Elite V2 oparty na silniku graficznym „Asura” jest grywalny zarówno na internalu jak i externalu.

Test The Elder Scrolls V: Skyrim

Ustawienia graficzne:

  • Internal – rozdzielczość 1366×768
  • external – rozdzielczość 1920×1080

skyrim egpu test ustawienia

Benchmark:

Początek gry – wydarzenia w Helgen, ucieczka do momentu przybycia do Rzecznej Puszczy.

skyrim egpu test benchmark 1 skyrim egpu test benchmark 2 skyrim egpu test benchmark 3 skyrim egpu test benchmark 4 skyrim egpu test benchmark 5

Wyniki:

  • internal – wykres czerwony
  • external – wykres zielony

skyrim egpu test wyniki

Wnioski i spostrzeżenia:

  • gra posiada domyślnie ustawioną blokadę klatek na 60
  • test został przeprowadzony na najwyższych ustawieniach graficznych
  • analizując wykres GPU Video Bus Load możemy zaobserwować jedno z najniższych wykresów użycia szyny dla externala ze wszystkich dotychczas przetestowanych gier. Na internalu wykorzystanie szyny oceniam jako średnie.
  • uzyskany fps w przedziale 50-60 był w pełni zadowalający

The Elder Scrolls V: Skyrim działający na silniku Creation Engine należy uznać za w pełni grywalny, zarówno na internalu jak i externalu na najwyższych ustawieniach graficznych. Właściciele mocniejszych kart graficznych jak np. GTX660, spokojnie będą mieć jeszcze zapas fps na dogranie dodatkowych modów poprawiających grafikę.

Test Deadlight

Ustawienia graficzne:

  • Internal – rozdzielczość 1366×768
  • external – rozdzielczość 1920×1080

deadlight egpu test ustawienia

Benchmark:

Fragment rozgrywki kilku początkowych etapów. 1 cutscenka wprowadzająca.

deadlight egpu test benchmak 1deadlight egpu test benchmark 2 deadlight egpu test benchmark 3 deadlight egpu test benchmark 4

Wyniki:

  • internal – wykres czerwony
  • external – wykres zielony

deadlight egpu test wyniki

Wnioski i spostrzeżenia:

  • gra posiada domyślnie ustawioną blokadę klatek na 60. Można to zmienić edytując plik konfiguracyjny.
  • początkowy fragment wykresu na 30fps to cutscenka
  • wykres obciążenia szyny wskazuje wysokie użycie dla internala oraz dość niskie dla externala
  • uzyskany fps był w pełni wystarczający do komfortowej rozgywki

Deadlight jest platformówką utrzymaną w post-apokaliptycznych klimatach, opartą na silniku Unreal Engine 3. Tak jak inne gry (w większości FPP) oparte na tym silniku, jest na eGPU w pełni grywalna zarówno na internalu jak i externalu.

Co tak naprawdę „zapycha” szynę w eGPU ?

PCI_Express_logo-660x268

Pytanie na które długo nie byłem sobie w stanie odpowiedzieć. To że skrócona szyna PCI-E do x1 2.0 w niektórych grach ograniczała wartość fps lub powodowała sporadyczne, lecz irytujące spadki wiedziałem od dawna. To że problemem była komunikacja CPU<->GPU przez tę szynę domyśliłem się niedawno. Ale co tak naprawdę powodowało, że szyna oferująca prawie 630MB/s w obie strony zapychała się, dowiedziałem się dopiero dzisiaj przy okazji testów gry Wolfenstein: The New Order opartej na OpenGL i silniku id Tech 5…

Wąskim gardłem jest procesor. A raczej wypełnienie obiektów teksturami przez procesor. Generalnie jest to całkowicie słuszna zmiana optymalizacyjna. Dzisiejsze gry w bardzo małym stopniu wykorzystują wielowątkowość procesora dlatego każda zmiana która odciąża kartę graficzną jest chwalebna. A przecież wypełnianie obiektów teksturami jest na tyle prostą czynnością, że procesor w zupełności powinien sobie z tym poradzić.

W przypadku eGPU optymalizacyjna zmiana „na plus” okazuje się jednak fatalną decyzją. Jeśli bowiem w VRAM mam zaalokowane 1GB tekstur to przesłanie ich do procesora przez skróconą szynę by ten je powstawiał, a potem przesłał efekt końcowy z powrotem do GPU musi spowodować gigantyczne spadki fps. Właśnie to obserwujemy w takich grach jak wspomniany wcześniej Wolfenstein: The New Order, Total War: Rome II, Total War: Shogun II, czy w dość ograniczonym na szczęście stopniu w serii Battlefield oraz Crysis 3.

Uściślając, problem występuje we wszystkich grach w których tekstury są wypełniane dynamicznie (tylko w obrębie pola naszego widzenia) przez CPU. Tam gdzie tekstury wstawiane są „na stałe” podczas „ekranu wczytywania” problem z szyną nie występuje. Do takich gier należy m.in. Natural Selection 2 (występuje tam tkz. „precaching”), seria Half Life (słynny „paseczek” między etapami nawet tej samej mapy) czy Metro: Last Light (również ekrany ładowania między misjami). Ciekawym wyjątkiem jest Wiedźmin 2, w którym tekstury również były nakładane „w tle” (przykładowo wejście do karczmy we Flotsam u mnie często najpierw wyświetlało „plastelinowe” obiekty, a sekundę potem właściwe tekstury). Podejrzewam jednak, że w naszej polskiej superprodukcji końcowym etapem wypełniania teksturami zajmuje się jednak GPU co by potwierdzało znikome użycie CPU.

W Wolfenstein: The New Order zaobserwowałem inne bardzo interesujące zjawisko – nawet na włączonej obsłudze tekstur przez CPU (vt_maxPFF >0) jeśli stanąłem w miejscu, nie poruszyłem myszą ani nie kliknąłem w klawiaturę to w ciągu 2 sekund fps z 10-15 rósł samoistnie do 60. Każda, nawet najmniejsza „zmiana stanu” powodowała drop z powrotem do 10-15fpsów. Wniosek – CPU na nowo musiał przeliczyć i powstawiać tekstury w „nowym polu widzenia”. Na szczęście engine zastosowany w tej grze pozwala przełączyć te operacje z powrotem na GPU co znacznie zwiększy ilość fps kosztem tego, że zapełnianie tychże obiektów teksturami potrwa dłużej (przez co przez ułamek sekundy możemy ujrzeć niewyraźne, „plastikowe” ściany).

Prognoza na przyszłość jest raczej dla eGPU niewesoła. Coraz więcej gier to sandboxy w których głównym zadaniem programistów jest ukryć wszelkie doczytywania lokacji i tekstur „w tle”. jeśli udział CPU w takich operacjach będzie częstszy, a engine gry nie pozwoli na zmianę w pliku konfiguracyjnym, będziemy mieć do czynienia z bardzo dużym ograniczeniem przez szynę w przypadku eGPU.

Test Wolfenstein: The New Order

Ustawienia graficzne:

  • Internal – rozdzielczość 1366×768
  • external – rozdzielczość 1920×1080

wolfenstein egpu test ustawienia 1wolfenstein egpu test ustawienia 2

Benchmark:

Fragment pierwszej misji „Sztab Trupiej Główki”. Początkowo dość statyczny lot bombowcem, w końcówce dość zażarta walka na otwartym terenie w okopach. Kilka krótkich cutscenek.

vt_maxPPF 16

vt_maxPPF 16

vt_maxPPF 0

vt_maxPPF 0

vt_maxPPF 16

vt_maxPPF 16

vt_maxPPF 0

vt_maxPPF 0

vt_maxPPF 16

vt_maxPPF 16

vt_maxPPF 0

vt_maxPPF 0

Wyniki:

  • internal – wykres czerwony
  • external – wykres zielony
wolfenstein egpu test wyniki 1

vt_maxPPF 16

vt_maxPPF 0

vt_maxPPF 0

Wnioski i spostrzeżenia:

  • gra domyślnie ma zablokowane 60 klatek na sekundę. Zmiana opcji synchronizacji pionowej nic w tym względzie nie zmienia. Limit można odblokować przez komendę seta com_maxfps 120.
  • wszelkie spadki do stałych 30fps to cutscenki
  • test wykonałem dwukrotnie. Najpierw na domyślnych ustawieniach „medium” bez jakichkolwiek zewnętrznych zmian w pliku cfg. Wyniki przedstawione są na wykresie oraz screenach podpisanych etykietą „vt_maxPPF 16”. Drugi test wykonałem również na ustawieniach „medium” z dodatkową linią „vt_maxPPF 0” w pliku cfg – identyczną etykietą podpisałem powyższy wykres oraz screeny.
  • jak widać różnica jest kolosalna. O ile w pierwszym teście uzyskany fps oscylował w przedziale 10-20 przez co grę należałoby ocenić za całkowicie niegrywalną, o tyle w drugim teście fps na poziomie 40-60 gwarantował w miarę komfortową rozgrywkę.
  • komenda vt_maxPPF odpowiada za obsługę tekstur przez CPU. Wartości >0 oznaczają ilość stron na klatkę. Wartość 0 oznacza, że obsługą tekstur zajmuje się GPU.
  • co bardzo istotne – proszę zwrócić uwagę jak spadło wykorzystanie szyny na externalu (GPU Video Bus Load) przy zmianie vt_maxPPF na 0.

Wolfenstein: The New Order jest pierwszą grą przetestowaną na moim eGPU, która działa w oparciu o OpenGL a nie DirectX. Paradoksalnie test ten dał mi najwięcej do myślenia – swoje wnioski zamieściłem w osobnym artykule. Przy wyłączonej obsłudze tekstur przez CPU, tytuł ten należy uznać za grywalny zarówno na externalu jak i internalu. Kilka dodatkowych zmian „w dół” w opcjach graficznych jak i w pliku cfg z pewnością mogłyby się jeszcze przełożyć na 10fpsów więcej.