[h=1][/h] Microsoft setzt bei Windows 8 auf umfangreiche GPU-Beschleunigung, damit das gesamte System schnell wirkt. Das gilt vor allem für Metro-Apps. In vielen Bereichen ist Windows 8 deutlich schneller als Windows 7 und mehr Apps sollen die Vorteile direkt nutzen können.
Früher wurde Grafikhardware primär genutzt, um 3D-Spiele und Videos zu beschleunigen. Mit Windows 7 hat Microsoft sein Grafik-API DirectX um Direct2D und Directwrite erweitert, um 2D-Grafik und Textdarstellung per GPU zu beschleunigen. Mit Windows 8 geht Microsoft diesen Weg weiter. Da typische Spielebenchmarks bei der Optimierung der von Microsoft als "Mainstream-Grafik" bezeichneten Elemente nicht weiterhelfen, hat Microsoft neue Maßeinheiten festgelegt, um seine eigenen Fortschritte zu messen.
[h=3]FPS reichen nicht[/h] Wie von Spielebenchmarks bekannt, so werden auch weiterhin Frames per Second (Bilder pro Sekunde) gemessen. Microsoft strebt eine Framerate von 60 Bildern pro Sekunde an, da damit eine flüssig erscheinende Darstellung sichergestellt ist und die meisten Displays mit einer Bildwiederholfrequenz von 60 Hz arbeiten.
Ergänzt wird die Framerate um eine "Glitch Count" genannte Maßeinheit, die erfasst, wie oft das Rendern mehr als ein Sechzigstel Sekunde gedauert hat und wie viele aufeinanderfolgende Bilder dies betroffen hat. Microsoft will so erfassen, wie oft eine Animation ins Stocken gerät, beispielsweise bei komplexen Szenen. Denn eine durchschnittliche Framerate von 60 Bildern pro Sekunde sagt nichts darüber aus, ob und wie oft die Framerate zwischendurch einbricht. Das Ziel ist klar: ein Glitch Count von null.
Mit "Time to first frame" misst Microsoft die Zeit, bis eine Animation startet, also die Zeit zwischen dem Tippen mit dem Finger und dem Start der Animation. Gemessen wird damit vor allem, wie lange es dauert, DirectX zu starten.
Ein weiterer Faktor, der maßgeblichen Einfluss darauf hat, ob ein System als schnell empfunden wird, ist die Speichernutzung. Je mehr Speicher die Grafikkomponenten nutzen, desto weniger steht oft für Apps bereit, was das Umschalten zwischen Apps verlangsamt. Microsoft misst die Speichernutzung, wenn eine App "idle" ist, also nichts tut und auch keine neuen Informationen rendert, wenn die App Informationen mit einfachen Operationen auf dem Bildschirm zeichnet, bei der Texturerzeugung, bei der eine große Zahl an Objekten in der GPU erzeugt werden, bei der Erstellung eines Vertex-Buffers wenn geometrische Formen erzeugt werden, und beim Datentransfer in die GPU.
Mit der Erfassung dieser Messgrößen anhand verschiedener Arten von Apps und Szenarien hat Microsoft DirectX und Treiber optimiert. Dabei wurde zudem die CPU-Last beobachtet, schließlich geht es darum, die Gesamtlast möglichst sinnvoll zu verteilen, um ein System schnell zu machen.
[h=1]Schnellere Textdarstellung[/h] Text ist das wohl am häufigsten genutzte graphische Element in Windows, so dass der Textdarstellung auch große Bedeutung zukommt, wenn es darum geht, die Gesamtleistung des Systems zu verbessern. Denn davon profitiert die Darstellung von Webseiten ebenso wie E-Mail-Programme sowie Instant-Messaging-Clients und natürlich das neue Metro-UI, das mit vielen Textelementen arbeitet.
Das mit Windows 7 eingeführte Directwrite wurde dazu weiterentwickelt, um die Framerates bei der Textdarstellung zu erhöhen. Microsoft verspricht ein Plus von 131 bis 336 Prozent. Dies soll sich vor allem beim Scrollen durch umfangreiche Textdokumente auf einem Touchscreen bemerkbar machen. Zugleich wird die CPU durch die Optimierungen entlastet.
[h=3]SVG und Canvas[/h] Auch die Darstellung geometrischer Formen hat Microsoft in Windows 8 deutlich beschleunigt. Das wirkt sich unter anderem auf die Darstellung von Tabellen, Diagrammen und UI-Elementen aus. Microsofts primärer Fokus lag dabei auf einer schnell arbeitenden Implementierung des Canvas-Elements aus HTML5 und SVG. Beide Techniken werden vom Internet Explorer 10 aber auch von Metro-Apps genutzt werden.
Werden geometrische Formen mittels Direct2D gezeichnet, so nimmt das API Anweisungen in Form von 2D-Formen wie Rechteck, Ellipse und Pfad entgegen sowie den Ort, an dem diese gezeichnet werden sollen, und Eigenschaften wie Farbe und Pinselstärke. Anschließend werden diese Instruktionen in Dreiecke und Kommandos übersetzt, die an Direct3D weitergeben werden. Microsoft nennt diesen Prozess Tessellation.
Um nun die Darstellung geometrischer Formen in Windows 8 zu beschleunigen und die CPU-Last dabei zu senken, wurde zum einen die Tessellation für einfache Formen optimiert, zum anderen das Rendern freier Formen mit einer neuen Hardwarefunktion erweitert: Target Independent Rasterization, kurz TIR.
Dank TIR benötigt Direct2D weniger CPU-Zyklen für die Tessellation und kann die Daten schneller an die GPU weiterreichen. Allerdings muss TIR von der GPU unterstützt werden, was bei Hardware, die DirectX 11.1 unterstützt, der Fall ist. AMD-Grafikkarten der Serie Radeon HD 7000 und Nvidia-Karten der Serie Geforce 600 unterstützen in der Regel DirectX 11.1. Vorsicht ist jedoch bei den nur für PC-Hersteller angebotenen Modellen wie der Radeon HD 7670 im aktuellen Aldi-PC geboten. Solche auf den Produktseiten der Hersteller nicht geführten Grafikkarten stammen meist aus der Vorgängergeneration und sind nur durch Umbenennung der aktuellen Serie zugeordnet. Die früheren Modelle der Serien 7000 (AMD) und 500 (Nvidia) unterstützen DirectX 11, nicht aber DirectX 11.1.
Microsoft verspricht, dass Linien durch die optimierte Tessellation 184 Prozent schneller, Rechtecke sogar 438 Prozent schneller gezeichnet werden. Für die Darstellung mit TIR weist Microsoft bei unterschiedlichen SVG-Dateien eine Geschwindigkeitssteigerung zwischen 151 und 523 Prozent aus.
[h=3]JPEG und PNG beschleunigt[/h] Eher bescheiden fallen die Optimierungen bei der Darstellung von Bildern aus. Bei JEPGs nutzt Windows 8 beim Decodieren SIMD auf allen CPU-Architekturen und ein beschleunigtes Huffman-Decoding sowie -Encoding. Bei PNGs werden ebenfalls SIMD-Instruktionen für das Dekodieren verwendet. Zudem wird das Decodieren und Encodieren mit einer optimierten Zlib-Implementierung beschleunigt.
[h=3]Nur zeichnen, was sich ändert[/h] DirectX ist ursprünglich für die Darstellung von Spielen entwickelt worden, doch Spiele unterscheiden sich deutlich von Desktop-Anwendungen wie einem Browser. Während sich bei einem Spiel oft der gesamte Bildinhalt ändert, müssen beim Scrollen im Browser eigentlich nur kleine Teile neu gezeichnet werden.
In Windows 8 wurde DirectX auf Szenarien optimiert, bei denen nur kleine Teile neu gezeichnet werden müssen und gescrollt wird. Das soll nicht nur für mehr Effizienz und Geschwindigkeit sorgen, sondern auch die Daten reduzieren, die in den Speicher kopiert werden müssen, was letztendlich die Leistungsaufnahme des Systems senkt und so die Akkulaufzeit erhöht.
[h=3]Direct2D-Effekte[/h] Direct2D wurde um neue APIs erweitert, mit denen sich Effekte in Echtzeit auf UI-Elemente und Fotos anwenden lassen, angefangen bei 3D-Transitionen und Perspektiveränderungen, über Weichzeichner bis hin zu Belichtungskorrekturen, Helligkeits- und Kontrasteinstellungen und Objektivkorrekturen bei Fotos.
[h=1]DirectX wird einfacher[/h] Mit dem in Windows 8 integrierten Direct3D 11.1 API vereinheitlicht Microsoft seine gewachsene Struktur von Grafik-APIs. Dabei wird Direct3D auch für die Beschleunigung von 2D-Grafik und Text, die Bildverarbeitung und 3D-Grafik sowie allgemeine Berechnungen und die beschleunigte Videodarstellung verwendet. Dadurch soll die Mischung unterschiedlicher Arten von Inhalten einfacher werden, schließlich verwaltet ein einziges API alle GPU-Ressourcen, die mit dem Rendern zusammenhängen. Zudem wird die Speicherbelegung reduziert und Redundanzen werden eliminiert.
Direct3D verfügt dazu über einen Mechanismus, um festzustellen, welche Funktionen auf der jeweiligen Hardware zur Verfügung stehen, und passt sich daran an. Microsoft will es Entwicklern damit erlauben, maximalen Nutzen aus der GPU zu ziehen, ganz gleich, ob sie auf lange Akkulaufzeit in einem Tablet oder hohe Leistung im Spiele-PC ausgelegt ist.
[h=3]Unterstützung fürs Stromsparen[/h] Ein Ansatz, um auf mobilen Systemen für schnelle Grafik bei langer Akkulaufzeit zu sorgen, ist "Tile-based Rendering". Die GPU rendert den Bildschirm dabei abschnittsweise, wobei immer wieder die gleichen Kommandos auf jeden neuen Abschnitt angewendet werden, statt gleich auf den gesamten Bildschirminhalt. Damit soll verhindert werden, dass Daten unnötig oft in die GPU geladen werden müssen, um die Leistungsaufnahme gering zu halten.
Windows 8 unterstützt eine Reihe neuer Flags, Hinweise und APIs, die dafür sorgen sollen, dass einzelne Abschnitte nicht häufiger gerendert werden als nötig. Metro unterstützt dies von Hause aus, wovon auch Metro-Apps direkt profitieren.
Ein weiterer Ansatz, um Grafikberechnungen bei geringer Leistungsaufnahme schnell zu machen, besteht darin, die Präzision mit der gerechnet wird, zu senken. In Windows 8 können Apps angeben, welchen Grad an Präzision sie für ihre Grafikberechnungen benötigen.
Quelle: golem.de