Doom mit Vulkan: Performance-Analyse mit Benchmarks und Frametimes
Der spielerisch gelungene Shooter von id Software ist auch technisch ein Meisterwerk. Neben dem eher unspektakulären DOTA 2 und dem Vulkan-Port von The Talos Pinciple ist Doom der dritte Titel, der den Open-GL-Nachfolger Vulkan unterstützt. Dieser lässt insbesondere bei AMD-GPUs die Bildraten in die Höhe schnellen. Bei Nvidia stießen wir jedoch auf einige Ungereimtheiten, die wir in diesem Artikel erörtern wollen.
Auf dieser Seite
Die für Doom erstmals zum Einsatz kommende Id-Tech-6-Engine ist zweifellos beeindruckend. Die Technik basiert zwar auf der erstmals in Rage verwendeten Id Tech 5, hat mit dieser aber nur noch wenige Gemeinsamkeiten. Statt größtenteils vorberechneter, statischer Beleuchtung nutzt Doom einen dynamischen physikbasierten Renderer samt High-Dynamic-Range-Ansatz für die (globale) Beleuchtung sowie Schattierung, volumetrische Effekte, GPU-Partikeleffekte inklusive Kollisionsmodell, sehr hochauflösende Screen-Space-Reflections, eine sehr sauber arbeitende temporale Kantenglättung sowie hochauflösende Texturen. Wenn Sie sich für die Technik interessieren und dem Englischen mächtig sind, legen wir Ihnen das umfangreiche Interview mit leitenden Doom-Entwicklern bei den Kollegen von Eurogamer.net ans Herz.
Doom - Performance-Wunder Vulkan-API
Neben dem technisch eher weniger anspruchsvollen DOTA 2 und dem im Kern noch auf Direct X 11 basierenden The Talos Principle nutzt Doom als drittes Spiel die Low-Level-API Vulkan. Und diese Schnittstelle hat durchaus Potenzial, aus Leistungssicht einiges durcheinander zu würfeln. So bringt Vulkan bei Verwendung einer schwächeren CPU einen gewaltigen Performance-Anstieg. In der kommenden PCGH-Ausgabe 09/2016 haben wir beispielsweise zwei Systeme für 400 und 500 Euro auf Basis eines AMD Athlon X4 845 zusammengestellt und mit verschiedenen Spielen ergründet, welche Frameraten und Qualitätseinstellungen mit diesen Budget-PCs in aktuellen Spielen möglich sind. Einer der Titel ist Doom und zwar mit dem erklärten Performance-Target von mindestens 60 Bildern pro Sekunde - zumindest mit den verwendeten AMD-GPUs ist das mit der Carrizo-CPU, die streng genommen sogar die Mindestanforderungen unterschreitet, selbst mit massivem Detailverzicht nicht machbar. Unter Vulkan indes sprintet der kleine Vierkerner gar in dreistellige Fps-Regionen.
Doch auch den Grafikkarten verhilft Vulkan teilweise zu massiven Steigerungen. Zum aktuellen Zeitpunkt betrifft dies hauptsächlich AMD-GPUs, die unter der alternativen Schnittstelle Open GL 4.5 allerdings auch weit hinter vergleichbare Nvidia-Grafikkarten zurückfallen. Ein Grund dafür ist zweifelsfrei Asynchronous Compute, dank der Parallelisierung von Compute- und Rasterization-Pipelines kann die sonst in vielen Fällen brach liegende Leistung der Radeon-Grafikkarten deutlich effizienter genutzt werden. Die AMD-GPU können so in vielen Fällen zwischen 30 und 60 Prozent höhere Bildraten liefern, selbst in höheren Auflösungen sind die Zugewinne in vielen Fällen massiv. Nvidia-GPUs dagegen nutzen in Doom bislang kein Async Compute, laut Nvidia wird an dem Problem aber gearbeitet. Momentan verlieren die meisten Geforce-Grafikkarten unter Vulkan Leistung, sollte nicht die CPU einen Flaschenhals darstellen. Allerdings ist die Nvidia-Performance unter Open GL schon sehr eindrücklich, selbst mit Async Compute sind AMD-ähnliche Leistungsgewinne unter Vulkan wohl nicht zu erwarten. Die neue Pascal-Generation sowie die potente GTX 980 Ti können allerdings trotzdem unter Vulkan zulegen (wohl aufgrund eines CPU-Limits unter Open GL), zumindest in der Theorie. Denn Nvidia hat unter der Vulkan-API noch mit einem anderen Problem zu kämpfen.
Doom - Erzwungene Bildsynchronisation bei Nvidia
Nutzer einer Geforce-Grafikkarte haben das bislang kaum dokumentierte Problem eventuell schon an eigenem Leib erfahren. Vielleicht sind Sie auch schon über entsprechende Foren-Einträge gestolpert oder Sie haben die Performance-Analyse von Digital Foundry auf Youtube gesehen. Wechseln Sie mit einer Nvidia-GPU auf die Vulkan-Schnittstelle, wird mit dem aktuellen Treiber Geforce 368.81 WHQL eine Bildsynchronisation aktiv, die stark an jene unter Microsofts Windows Store (UWP) beziehungsweise der im Borderless Window samt Triple Buffering erinnert. Die Synchronisation lässt sich momentan nicht abschalten und wirkt sich in mehrfacher Hinsicht auf die Performance aus: Durch die Pufferung entsteht eine lästige Eingabeverzögerung, die insbesondere bei einem schnellen Shooter wie Doom außerordentlich unwillkommen ist. Dazu werden zur Wiederholfrequenz unpassende Frames nach der Synchronisation fallengelassen (Framedrops), was sich in Microruckeln und einigen gröberen Stockern manifestiert. Der dritte Punkt ist die durchschnittliche Leistung, die durch die Bildsynchronisation deutlich geringer ausfällt. Auf der Habenseite entfällt unschönes Tearing.
Die von uns für sämtliche Messungen verwendete Software PresentMon64 liefert uns dankenswerter Weise nicht nur die Frametimes, sondern zeigt auch den Umstand an, dass eine Synchronisation vorliegt, die auf Microsofts DirectX Graphics Infrastructure DXGI zurückfällt. Diese Komponente wiederum dient zur Kommunikation mit dem Windows Display Driver Model (WDDM) und liefert über diesen schlussendlich die gerenderten Frames an das Display. Da dies auf verschiedene Weisen über User-Modes geschehen kann, ist das Problem mit der Bildausgabe unserer Einschätzung nach im aktuellen Nvidia-Treiber zu suchen. Die Vulkan-API unterstützt jedenfalls auch eine nicht synchronisierte Bildausgabe. Der Umstand sollte sich also relativ einfach per Treiber-Fix beheben lassen. Dank der umfassenden Performance-Dokumentation durch PresentMon können wir zudem die synchronisierten Frames zweifelsfrei identifizieren und diese aus unseren Messungen eliminieren. Wir präsentieren Ihnen daher für die Nvidia-Grafikkarten zweierlei Ergebnisse: Zum einen die tatsächlich gemessenen Bildraten und Frametimes, die durch die 60-Hz-Synchronisation unseres 4K-Displays beeinträchtigt wurden und zum anderen die bereinigten Messergebnisse, die teils deutlich besser ausfallen.
Doom - Benchmarks und Frametime-Messungen
Low-Level-APIs erfordern andere Ansätze sowie Betrachtungsweisen als die gewohnten Messungen, so scheint es jedenfalls. Kein einziger Titel ließ sich bislang ohne Probleme messen und auch an Sie als Leser stellen die Ergebnisse erhöhte Anforderungen. Im Normalfall stellen wir einfache Benchmark-Balken über vier Auflösungen zur Verfügung, die Sie im Drop-Down-Menü auswählen und vergleichen können. Dieses System müssen wir für Doom ein wenig umkrempeln. Die Auflösungen für Full HD sowie Ultra HD finden Sie nun in der Kopfzeile, im Drop-Down-Menü verbergen sich die Messungen für Vulkan, Open GL sowie Vulkan (adjusted), also die von der Bildsynchronisation bestmöglich bereinigten Durchschnitts-Fps der Nvidia-GPUs. Dies dient dazu, die unterschiedliche Performance unter Open GL und Vulkan zu vergleichen. Klicken Sie dazu im Drop-Down-Menü einfach zwei oder mehr der Punkte an, mit einem Klick auf die Schnittstelle unten im Diagramm können Sie die Benchmarks neu sortieren lassen. Bewegen Sie den Mauszeiger auf einen der Balken, wird Ihnen der prozentuale Unterschied zu den anderen Balken eingeblendet. So können Sie genau erfahren, wie hoch die Leistungsunterschiede zwischen den Schnittstellen ausfallen und wie viel Leistung die Nvidia-GPUs durch die Bildsynchronisation einbüßen. Auf die minimalen Frameraten haben wir verzichtet, da wir durch PresentMon die Frametimes geliefert bekommen, keine klassischen Min-Fps, wie man sie durch Messungen mit Fraps erzielt. Stattdessen verweisen wir auf die exemplarischen Frametimes, die wir mit ausgewählten Grafikkarten angefertigt haben. Weitere Auflösungen und Frametime-Messungen finden Sie im kommenden Heft PCGH 09/2016.

So eine Umfrage würde ich gerne im Google Feed oder auf Google+ sehen und @PCGH ihr habt da oben einmal 150ti statt 1050ti geschrieben
Mich wrüde interessieren, ob sich da in der Praxis was getan hat