Unter Windows 8 sollen alle Apps mithilfe moderner Grafikhardware ansprechende und leistungsstarke Grafiken nutzen können. Dafür bauen wir auf die bewährten Grundlagen von DirectX und der dadurch stetig zunehmenden Bandbreite von APIs und Funktionen auf. Unter Windows 7 haben wir die Funktionen von DirectX erweitert, um einer größeren Auswahl an Apps eine gemeinsame Plattform für hardwarebeschleunigte Grafik zur Verfügung zu stellen. Bis zu diesem Zeitpunkt bot DirectX hauptsächlich 3D-Grafik. Wir fügten jedoch Funktionen hinzu, um auch die von uns so genannte „Mainstream“-Grafik zu unterstützen. Mainstream-Anwendungen drehen sich vor allem um typische Desktopanwendungen, die die meisten Menschen täglich verwenden: Webbrowser, E-Mail, Kalender, Büroanwendungen usw. Unter Windows 7 wurden zwei neue Komponenten zu DirectX hinzugefügt: Direct2D für zweidimensionale Grafiken (Formen, Bitmaps usw.) und DirectWrite für die verschiedenen Darstellungsformen von Text. Bei beiden Ergänzungen stand nicht nur die Leistung im Vordergrund, sondern auch die Bereitstellung qualitativ hochwertigen 2D-Renderings. Dank dieser Ergänzungen entwickelte sich DirectX zu einer hardwarebeschleunigten Grafikplattform für alle Arten von Apps. Als Internet Explorer 9 hardwarebeschleunigte Grafiken im Internet einführte, haben wir demonstriert, was eine typische App mit DirectX leisten kann. WinRT eröffnet diese Funktionen auch der gesamten Bandbreite der neuen Windows 8-Apps. In diesem Beitrag, den Rob Copeland, der Gruppenprogrammmanager unseres Grafikteams verfasst hat, wird diese neue Gattung grafischer Apps ausführlich erläutert. – Steven

 


Bei Computergrafik ist Hochleistung ein Muss. Bei frühen PCs waren eigenständige, optionale Grafikkarten auf spezialisierte Anwendungen wie CAD/CAM und Spiele zugeschnitten. Doch bereits damals ahnte man, dass diese Grafikleistung auch für weitere Bereiche genutzt werden könnte: vor allem für eine bessere Benutzeroberfläche und höhere Benutzerfreundlichkeit. Eine der ersten Grafikkarten für PCs war „Windows Accelerator“ von S3 Graphics. Ihr Schwerpunkt lag auf der Verbesserung der Benutzerfreundlichkeit, indem sie Fenster schneller auf dem Bildschirm bewegte. Nicht nur die Grafikhardware entwickelte sich weiter, sondern auch die Methoden, mit denen Entwickler mit dieser Hardware interagieren.

DirectX ist die Windows-Komponente, durch die eine gemeinsame Anwendungsprogrammierschnittstelle (Application Programming Interface, API) bereitgestellt wird. Dank dieser Schnittstelle können Entwickler mithilfe der Grafikhardware von PCs Text, Formen und dreidimensionale Szenen erstellen und auf dem Bildschirm anzeigen. Auch DirectX hat sich im Laufe der Zeit sowohl bezüglich der Funktionen als auch der Leistungsmerkmale weiterentwickelt. Anfangs war DirectX vorwiegend auf Spiele ausgerichtet. Mit der Weiterentwicklung von Anwendungen hin zu einer umfangreicheren und grafikintensiveren Benutzeroberfläche wurde immer häufiger DirectX verwendet, um die Leistung zu steigern und die visuellen Elemente zu verbessern.

Auftritt von Windows 8

Als wir mit der Arbeitsplanung für Grafiken unter Windows 8 begannen, war uns klar, dass wir eine neue, visuell anspruchsvolle Art der Benutzerinteraktion mit Anwendungen und Windows selbst entwickeln würden. Wir wussten auch, dass wir eine neue Plattform zur Entwicklung von Apps im Metro-Stil entwickeln und auf ein noch vielfältigeres Hardwaresortiment als je zuvor ausrichten müssten. Obwohl uns als Ausgangspunkt schon eine herausragende Grafikplattform zur Verfügung stand, lag noch viel Arbeit vor uns, um diese Ziele zu erreichen. Wir entschieden uns für vier Hauptziele:

  1. Sicherstellen, dass alle Apps im Metro-Stil flüssig und schnell gerendert werden
  2. Bereitstellen einer hardwarebeschleunigten Plattform für alle Apps im Metro-Stil
  3. Hinzufügen neuer Funktionen zu DirectX, um verblüffende visuelle Effekte zu ermöglichen
  4. Unterstützen einer bisher unerreicht großen Vielfalt von Grafikhardware

Obwohl all diese Ziele unterschiedliche Aspekte der Entwicklung von Windows 8 betreffen, hängen sie doch alle von herausragender Leistung und starken Funktionen der Grafikplattform ab.

Steigern der Leistung

Die Grafikleistung unter Windows ist sowohl vom Betriebssystem und dem Hardwaresystem – bestehend aus CPU, GPU (Grafikprozessor)– als auch vom dazugehörigen Bildschirmtreiber abhängig. Um eine hervorragende Benutzererfahrung für Apps im Metro-Stil zu gewährleisten, mussten wir sicherstellen, dass sowohl die Softwareplattform als auch das Hardwaresystem hervorragende Leistung erzielen.

In der Vergangenheit haben wir viele verschiedene Benchmarks und Apps zur Messung der DirectX-Leistung verwendet. In der Regel waren diese auf 3D-Spiele ausgerichtet. Obgleich Spiele immer noch sehr wichtig sind, war uns klar, dass viele der herkömmlichen Messmethoden für die Grafikleistung nicht alle nötigen Informationen für grafikintensive 2D Mainstream-Apps zur Verfügung stellten.

Daher entwickelten wir neue, auf Szenarien ausgerichtete Tests und Metriken, um unseren Fortschritt zu verfolgen. Wir nutzen die folgenden Metriken:

1.  Framerate

Die Framerate wird in Frames pro Sekunde (FPS) ausgedrückt. Diese Metrik wird häufig als Benchmark bei Spielen verwendet und ist genauso wichtig für Videoinhalte und andere Apps. Animationen auf dem Bildschirm werden bei einer Framerate von 60 FPS als flüssig wahrgenommen. Wir haben diese Frequenz angepeilt, da die meisten Computerbildschirme mit 60 Hertz aktualisiert werden. Mit dieser Framerate kann Windows sehr flüssige Animationen für Touch-Interaktionen bereitstellen, in denen Grafikelemente mit dem Finger über den Bildschirm geführt werden.

2.  Störungsrate

Die Framerate ist eine wichtige Metrik, aber sie ermöglicht kein umfassendes Bild. Es klingt zum Beispiel zunächst perfekt, wenn bei einem zehnminütigen Benchmarktest im Durchschnitt 60 FPS erzielt werden. Das sagt allerdings nichts darüber aus, wie niedrig die Framerate möglicherweise während des Tests gesunken ist. Wenn die Framerate beispielsweise zeitweilig bei anspruchsvollen Elementen auf 10 FPS absinkt, ruckeln die Animationen. Die Störungsrate gibt also an, wie oft das Rendering länger als 1/60 Sekunde dauerte und so zu einer niedrigeren Framerate führte. Sie gibt auch die Anzahl ausgelassener Frames wieder. Ziel ist, dass während einer Animation keine Frames ausgelassen werden.

3.   Zeit bis zum ersten Frame

Die meisten Benutzer erwarten, dass ihre Apps schnell gestartet werden, daher muss auch die Initialisierung von DirectX rasch erfolgen. Die „Zeit bis zum ersten Frame“ gibt an, wie lange es vom Antippen oder Anklicken einer App zum Starten dauert, bis der erste Frame der App auf dem Bildschirm angezeigt wird. Um dies zu messen, haben wir einfache Apps entwickelt, die die Analyse und Optimierung des Grafiksystems bezüglich der benötigten Zeitspanne zur Initialisierung eines Grafikgeräts, zur Zuweisung des benötigten Speicherplatzes usw. unterstützen. So können wir sicherstellen, dass das Einrichten von DirectX sehr wenig Zeit in Anspruch nimmt.

4.  Speicherauslastung

Je mehr Speicherplatz unsere Grafikkomponenten benötigen, desto weniger Speicherplatz steht den Apps zur Verfügung. Indem wir dafür sorgen, dass der Großteil des Speicherplatzes des Systems den Apps zur Verfügung steht, kann die beste App-Leistung erzielt werden, und es können mehr Apps gleichzeitig ausgeführt werden. Apps verwenden sowohl Speicherplatz des System als auch des Grafikprozessors. Speicherplatz des Grafikprozessors wird vorwiegend für Renderingvorgänge verwendet, wie das Zeichnen von Bildern, geometrischer Formen und Text. Außerdem gibt es Grafikvorgänge, die die CPU und dementsprechend Systemspeicherplatz verwenden.

Zur Charakterisierung der Speicherauslastung messen wir für die folgenden Szenarien den vom System verwendeten Speicherplatz:

  • App im Ruhezustand. Das heißt, sie führt keine Aufgaben aus und berechnet oder zeigt keine neue Informationen auf dem Bildschirm an.
  • Die App zeigt Informationen auf dem Bildschirm an. Dies stellt die grundlegenden Speicherplatzanforderung für eine einfache Zeichnung dar.
  • Erstellung von Textur. Dies stellt den für die Erstellung zahlreicher Bildobjekte benötigten Speicherplatz auf dem Grafikprozessors dar.
  • Vertexpuffererstellung. Dies gibt den zusätzlich erforderlichen Speicherplatz beim Erstellen geometrischer Formen an.
  • GPU-Datenupload. Diese Größe misst den zusätzlich erforderlichen Speicherplatz beim Laden von Daten in den Grafikprozessor (GPU).

Das Messen der Speicherplatzanforderungen für zahlreiche App-Typen und für diese unterschiedlichen Szenarien hat uns bei der weiteren Optimierung von DirectX und den Bildschirmtreibern geholfen.

5.  CPU-Auslastung

Die meisten Grafikvorgänge verwenden zusätzlich zur GPU die CPU. Wenn eine App zum Beispiel berechnet, was gezeichnet werden soll, wird dies üblicherweise auf der CPU ausgeführt. Die CPU-Auslastung ist eine wichtige Komponente. Denn je stärker die CPU bei einer Aufgabe in Anspruch genommen wird, desto weniger CPU-Zyklen stehen anderen Aufgaben zur Verfügung. Für eine gute Grafikleistung und gutes allgemeines Systemreaktionsverhalten ist eine ausgewogene Aufgabenverteilung zwischen CPU und GPU erforderlich.

Diese Benchmarks und Metriken unterstützen beim Erzielen flüssiger und leistungsstarker Apps und Benutzererfahrungen. Sie spielen also bei der Analyse von Mainstream-Apps eine große Rolle. Selbstverständlich verwenden wir auch weiterhin branchenübliche Benchmarks, Spiele und andere Methoden, um die allgemeine Leistung zu bestimmen.

Hardwarebeschleunigte Mainstream-Grafiken

Man kann Mainstream-Grafiken auf unterschiedliche Arten betrachten. Um sicherzustellen, dass wir mit unserer Arbeit Benutzern die gewünschte Leistung und Benutzererfahrung bieten, haben wir zahlreiche Beispiele von Apps im Metro-Stil und von Desktop-Apps untersucht und deren Verwendung von Grafikhardware analysiert. Vor allem Internet Explorer 9, Windows Live Mail und Windows Live Messenger nutzen DirectX sehr effizient. Da diese Apps DirectX auf hervorragende Weise verwenden, geben sie gute Hinweise auf die Leistung, die von anderen Apps erzielt werden kann. Das Resultat waren verschiedene Anstrengungen, um sicherzustellen, dass Mainstream-Apps schnell und optisch ansprechend arbeiten.

Verbessern der Leistung bei Text

Text ist mit Abstand das am häufigsten verwendete grafische Element unter Windows. Daher ist die Verbesserung der Renderingleistung bei Text ein großer Schritt zu einer besseren Benutzererfahrung. Webseiten, E-Mail-Programme, Sofortnachrichten und andere Lese-Apps profitieren von einer hoch qualitativen und leistungsstarken Textanzeige.

Die Designsprache des Metro-Stils ist typografisch umfangreich. Zahlreiche Anwendungen im Metro-Stil sind auf eine hervorragende Leseerfahrung ausgerichtet. DirectWrite ermöglicht eine großartige typografische Qualität, eine äußerst schnelle Verarbeitung von Schrifttypen für das Rendering und stellt eine branchenweit führende globale Textunterstützung bereit. Wir haben die Textleistung unter Windows 8 weiter verbessert, indem wir das Standardrendering von Text in Apps im Metro-Stil optimiert haben. So kann nun unter Beibehaltung der typografischen Qualität und der globalen Textunterstützung eine bessere Leistung und Effizienz erzielt werden.

Im folgenden Balkendiagramm werden die aus dieser Arbeit resultierenden Leistungsverbesserungen dargestellt. Es wurden Messungen für die folgenden Textszenarien berücksichtigt:

  • Rendering eines Bildschirms mit umfassendem Text in Lesegröße und in Abschnitten formatiert, wie häufig auf Webseiten oder in Word-Dokumenten zu finden
  • Rendering eines Bildschirms mit zahlreichen kleinen Textteilen in Lesegröße, wie man ihn in Steuerelementen von Benutzeroberflächen, z. B. Schaltflächen oder Menüs, findet
  • Rendering eines Bildschirms mit zahlreichen kleinen Textteilen in Überschriftengröße, wie man ihn in Titeln und Überschriften in Apps im Metro-Stil und als Überschriften von Blogbeiträgen und Nachrichten im Web findet

Steigerung der Framerate bei Windows 7-Abschnitten: 150 %, Benutzeroberfläche: 131 %, Titel und Überschriften: 336 %

Am stärksten macht sich die Leistungsverbesserung beim Scrollen durch ein langes Dokument auf einem Touchscreen bemerkbar. Die Reduzierung der für das Rendering der Buchstaben benötigten Zeit stellt anderen Aufgaben CPU-Zyklen zur Verfügung, z. B. zum Verarbeiten rascher Touch-Eingaben oder zum Anzeigen komplexer Dokumentlayouts.

Verbessern der Leistung beim geometrischen Rendering

Außerdem konnten wir die Leistung beim geometrischen 2D-Rendering erheblich steigern. Geometrie-Rendering ist die zentrale Grafiktechnologie für die Erstellung von Elementen wie Tabellen, Diagrammen, Graphen und Benutzeroberflächenelementen, wie im folgenden Beispiel gezeigt. Für Windows 8 haben wir den Schwerpunkt unserer Verbesserungen in diesem Bereich vorrangig auf äußerst leistungsstarke Implementierungen von HTML5-Canvas und SVG-Technologien zur Verwendung in Apps im Metro-Stil und auf mit Internet Explorer 10 angezeigten Webseiten gelegt.

  Ein Balkendiagramm für den Verlauf von Wetterdaten   

Die Wetter-App unter Windows 8 zeigt mithilfe von Geometrie eine Verlaufskurve für Temperatur- und Niederschlagsdaten an.

Zum Zeichnen von Geometrie empfängt Direct2D von der App Anweisung über die Elemente, die als 2D-Formen (z. B. Rechtecke, Ellipsen und Pfade) zu zeichnen sind, die Größe und Position der Formen und Spezifikationen über den Stil des Renderings, einschließlich Pinselfarbe und Strichstil. Anschließend konvertiert es diese Anweisungen in einen Satz von Dreiecken und Befehlen, die es zur Erstellung der gewünschten Ausgabe an Direct3D sendet. Diesen Konvertierungsvorgang bezeichnen wir als Mosaik.

Zur Verbesserung der Leistung des Geometrie-Renderings unter Windows 8 haben wir uns auf zwei Methoden zur Reduzierung der CPU-Auslastung im Zusammenhang mit dem Mosaik konzentriert.

Zum einen haben wir die Implementierung des Mosaiks beim Rendering einfacher Geometrien wie Rechtecke, Linien, abgerundete Rechtecke und Ellipsen optimiert. Im folgenden Diagramm wird der Effekt dieser Verbesserungen dargestellt.

Steigerung der Framerate im Vergleich zu Windows 7, Linien: 184 %, Ellipsen: 369 %, abgerundete Rechtecke: 220 %, Rechtecke: 438 %

Zum anderen verbessern wir mithilfe des neuen Grafikhardwarefeatures Target Independent Rasterization (TIR, zielunabhängige Rasterung) die Leistung beim Rendering von unregelmäßiger Geometrie (z. B. geografische Grenzen auf einer Karte).

Dank TIR benötigt Direct2D weniger CPU-Zyklen für das Mosaik. So können Zeichenanweisungen schneller und effizienter an den Grafikprozessor übermittelt werden, ohne die optische Qualität zu beeinträchtigen. TIR steht in neuer GPU-Hardware zur Verfügung, die für Windows 8 entwickelt wurde und DirectX 11.1 unterstützt.

In folgender Abbildung wird die Leistungsverbesserung beim Rendering von antialiasierter Geometrie aus einer Vielzahl von SVG-Dateien auf einer DirectX 11.1-GPU, die TIR unterstützt, gezeigt:

Anzeige von 15 Dateien mit Steigerungen zwischen 151 % und 523 %

Bei der Entwicklung von TIR haben wir eng mit unseren Grafikhardwarepartnern zusammengearbeitet. Durch diese Partnerschaft wurden erhebliche Verbesserungen möglich. DirectX 11.1-Hardware ist bereits auf dem Markt erhältlich. Wir arbeiten mit unseren Partnern daran, weitere TIR-fähige Produkte problemlos verfügbar zu machen.

Bildrendering

Bilder werden in einer Vielzahl von Szenarien verwendet, darunter beim Anzeigen von Benutzeroberflächen, Webseiten und anderer App-Inhalte. Websites verwenden in der Regel JPEGs für Bilder und PNG- und GIF-Dateien, um Benutzeroberflächenelemente wie Schaltflächengrafiken effizient zu speichern.

Digitalfotos sind unter Windows ebenfalls weit verbreitet. Die Zahl der Digitalfotos, die Windows-Benutzer auf ihren PCs anzeigen und bearbeiten, steigt weiterhin mit unglaublicher Geschwindigkeit.

Wir haben verschiedene Leistungsverbesserungen für die Arbeit mit Bildern und Fotos in den Formaten JPEG, GIF und PNG erzielt.

In Bezug auf JPEG wurden folgende Verbesserungen erzielt:

  • Schnellere Bilddecodierung durch Erweiterung der SIMD-Verwendung in allen CPU-Architekturen
  • Schnellere Huffman-Codierung und -Decodierung

In Bezug auf PNG wurden folgende Verbesserungen erzielt:

  • Schnellere Bilddecodierung durch Erweiterung der SIMD-Verwendung in allen CPU-Architekturen
  • Schnellere Bildcodierung und -decodierung durch Optimierung unserer zlib-Implementierung

Zusätzlich haben wir die Pixelformatkonvertierung und die Bildskalierung verbessert. Dies ermöglicht ein schnelleres Decodieren und Rendering von Bildern für alle Apps.

Im folgenden Video wird eine Test-App zur Messung der Decodier- und Rendering-Zeit für einen Satz Bilder verwendet. Windows 8 benötigt für das Rendering von 64 Bildern 40 % weniger Zeit als Windows 7 (4,37 s im Vergleich zu 7,28 s).

Rendering und Anzeige

Bei der Entwicklung von DirectX zur Unterstützung von weiteren Mainstream-Szenarien haben wir uns auch mit der Optimierung der Rendering- und Anzeigemethode für App-Inhalte befasst. Zwischen der Art und Weise, wie ein 3D-Spiel und eine Mainstream-App wie Internet Explorer seine Inhalte zeichnet, gibt es verschiedene bedeutende Unterschiede. Sehen Sie sich zum Beispiel das folgende Video eines Spiels an. In diesem Spiel ändert sich rasch die komplette Szenerie. Die Perspektive des Fahrzeugs ändert sich kontinuierlich, Wolken ziehen über den Himmel, und Rauch steigt vom Motor auf. Für jeden Frame muss also die App die komplette Szenerie neu zeichnen, um ein realistisches und ansprechendes Ergebnis zu erzielen.


Laden Sie dieses Video herunter, und spielen Sie es in einem geeigneten Media-Player ab:
MP4 in hoher Qualität | MP4 in niedriger Qualität

Betrachten Sie nun folgende Webseite. Sie enthält sowohl einen Textbeitrag als auch ein Video. Während der Wiedergabe des Videos muss der Browser zwar den Fensterbereich mit dem Video aktualisieren, nicht jedoch den Textbereich. Wenn der Benutzer auf der Seite nach oben scrollt, muss nur der neue Text am unteren Ende der Seite gerendert werden. Der übrige Text wurde bereits gerendert und muss nur noch verschoben werden.

Bild einer MSDN-Webseite mit eingebettetem Video, das auf dieser Seite wiedergegeben wird

Um Apps zu verbessern, die nicht für jeden Frame den gesamten Bildschirm neu zeichnen müssen, haben wir die Methode von DirectX für das Neuzeichnen von Bildschirmabschnitten und für den Bildlauf optimiert. So wird nicht nur die Effizienz und Leistung von Apps verbessert. Da redundantes Zeichnen und die Anzahl der Speichervorgänge von Grafikdaten reduziert werden, kann auch der Energieverbrauch gesenkt und somit die Akkulaufzeit verlängert werden.

Optimieren der gesamten Plattform

All diese Änderungen tragen zu einem äußerst schnellen und flüssigen Rendering unter Windows bei. Bisher haben wir uns vorwiegend mit Features von DirectX befasst. Das Großartige jedoch ist, dass all unsere Anstrengungen dazu beitragen, standardmäßig für die gesamte Plattform Hardwarebeschleunigung bereitzustellen. Da wir die Metro-Stil-Plattform auf Grundlage von DirectX entwickelt haben, profitieren alle Apps von der Grafikhardware des Systems, unabhängig von ihrer Programmiersprache und ihrem Framework.

Erstellen von verblüffenden visuellen Erlebnissen mit Direct2D und Direct3D

Direct2D-Effekte

Die Anwendung stilistischer Effekte auf Bilder ist für den Benutzer von heute zunehmend alltäglich. Mit diesen Effekten können Teile einer App hervorgehoben, die Aufmerksamkeit auf einen bestimmten Bildschirmbereich gelenkt oder einfach „nur“ das Aussehen einer App verbessert werden. Dank der Grafikfunktionen für Windows 8 sollten Entwickler diese Art von Effekten einfach und problemlos in ihren Apps verwenden können. Wir konzentrierten uns auf zwei Hauptbereiche, in denen die Bildverarbeitung benötigt wird:

  • Benutzeroberflächenbilder
    Die Benutzererfahrung im Metro-Stil verwendet dynamische visuelle Elemente. Apps im Metro-Stil sollten Bilder in Echtzeit verarbeiten können. Dazu zählen z. B. 3D-Übergangseffekte, Perspektivänderungen, Unschärfen und Hervorhebungen auf Benutzeroberflächenelementen.
  • Fotos
    Apps zur Fotobearbeitung benötigen oft ein umfangreiches Sortiment an Bildverarbeitungsfunktionen. Mit Effekten wie dem Anpassen von Belichtung, Helligkeit und Kontrast, dem Anwenden von Leuchtkraft und Glanz und dem Anwenden von fortgeschrittene Krümmungen und Linsenkorrekturen können diese Apps Ihre digitalen Erinnerungen verschönern.

Um dies zu ermöglichen, haben wir „Direct2D Effects“ hinzugefügt, einen neuen Satz APIs, die die Anwendung von hochwertigen hardwarebeschleunigten Effekten auf jedes beliebige Bild ermöglichen. Direct2D Effects haben folgende Vorteile:

  • Sie ermöglichen optimales Rendering von Bildeffekten, das den Anforderungen zahlreicher Apps gerecht wird.
  • Die Effekte sind hardwarebeschleunigt und können mit vielfältiger Grafikhardware verwendet werden.
  • Eine einfache API ermöglicht mit minimalem Programmieraufwand großartige Effekte.
  • Es sind zahlreiche integrierte Effekte verfügbar.
  • Sie unterstützen große Bildgrößen und bis zu 32 Bits pro Kanal.
  • Benutzerdefinierte Effekte können mit integrierten Effekten oder mit anderen benutzerdefinierten Effekten kombiniert werden.

Direct2D Effects ermöglichen verschiedene neue Funktionen von Windows 8: Wenn Sie zum Beispiel auf der Startseite auf eine Kachel tippen, verwendet die Kachel den Effekt für die 3D-Perspektivumwandlung, um die Anzeige in die richtige Richtung zu „kippen“. Sie ermöglichen auch die übrigen Funktionen der Plattform. Beispielsweise werden SVG-Filtereffekte und CSS-3D-Transformationen mithilfe von Direct2D Effects implementiert.

Direct3D 11.1 als gemeinsame Grundlage

Das Hinzufügen neuer Features wie Direct2D Effects ist eine großartige Methode, Entwicklern bei der Erstellung neuer Features zu unterstützen. Wir jedoch auch nach Möglichkeiten gesucht, die Verwendung bestehender DirectX-Features zu erleichtern.

Im Laufe der Entwicklung haben wir DirectX eine Reihe unterschiedlicher Features hinzugefügt. Zusammen mit programmierbaren Shadern in Direct3D 9 kam die Hardwarebeschleunigung der Videodecodierung. Unter Windows 7 haben wir Direct2D hinzugefügt und auf Grundlage von Direct2D 10 entwickelt. Zu dieser Zeit haben wir auch DirectCompute entwickelt, ein neues System für Hochleistungsberechnungen auf dem Grafikprozessor, das Teil von Direct3D 11 wurde. Ein Ergebnis all dieser Aktualisierungen ist, dass DirectX ein sehr umfassendes Sortiment an Features für Grafiken und Grafikprozessorberechnungen besitzt. Als Nebeneffekt ist es jedoch immer schwieriger geworden, eine App zu entwickeln, die Video, 2D-Grafiken, 3D-Grafiken, Text und DirectCompute zusammen verwendet.

Unter Windows 8 bildet die neue Direct3D 11.1-API die Grundlage für die Hardwarebeschleunigung von 2D-Grafiken und Text, Bildverarbeitung, 3D-Grafiken und -berechnung und Videoinhalten. Die neue API erleichtert das Mischen verschiedener Inhaltstypen in einer einzigen Szene, da nun diese einzige API alle Ressourcen der GPU für das Rendering verwaltet. Da die Redundanzen beim Erstellen mehrerer Verwaltungselemente für Grafikgeräte in App-Code eliminiert wurden, wurde auch die Speicherauslastung reduziert. Zudem stellt Direct3D 11.1 eine einheitliche Zugriffsmöglichkeit für Apps auf die verschiedenen Funktionen unterschiedlicher Grafikhardware zur Verfügung. Es werden Mechanismen bereitgestellt, mit denen die App feststellen kann, welche Funktionen zur Verfügung stehen. Es werden dann nur diese Funktionen verwendet. So können Apps die Funktionen der GPU optimal nutzen, unabhängig davon, ob die GPU für eine lange Akkulaufzeit auf einem Tablet oder Hochleistungsspiele auf einem Desktop-PC ausgelegt ist.

Verschiedene Grafikhardware

Früher wurde bei jeder neuen Windows-Veröffentlichung erwartet, dass die Funktionen der Grafikplattform und der Grafikhardware noch umfangreicher und leistungsstärker werden. Das gilt weiterhin, da Hersteller von Grafikhardware weiterhin schnellere, leistungsfähigere GPUs entwickeln. Unter Windows 7 sahen wir jedoch zum ersten Mal einen Wendepunkt bei diesen Erwartungen, da die Vielfältigkeit der Hardware mit der Einführung mobiler, energiesparender Geräte zunahm.

Mit Windows 8 setzt sich dieser Trend zu vielfältigen Hardwaretypen beschleunigt fort. Dies gilt sowohl für neue, leistungsstarke Grafikkarten als auch für das wachsende Angebot an energiesparenden Mobilgeräten. Die Hardware für Windows 8 wird so vielfältig sein wie noch nie: von Grafikhardware, die etwa 1 Watt in „Always On“-Tablets verbraucht, bis hin zu High-End-Systemen mit mehreren Grafikkarten, die zusammen 1.000 Watt oder mehr verbrauchen. Diese zunehmende Vielfalt erfordert neue Designüberlegungen.

Unser Ziel ist es weiterhin, visuell ansprechende Benutzererfahrungen zur Verfügung zu stellen. Bei mobilen Geräten ist die primäre Energiequelle der Akku. Daher müssen wir auch die Akkulaufzeit maximieren. Um die Anforderungen dieser neuen Formfaktoren bezüglich Leistung und Energieverbrauch zu erfüllen, haben viele unserer Grafikhardware-Partner neue GPU-Architekturen verwendet.

Energiesparende Systeme

Eine der in energiesparenden Systemen häufig verwendeten Grafikarchitekturen, die Leistung mit langer Akkulaufzeit verbindet, heißt „tile-based rendering“ (kachelbasiertes Rendering). Die Grundlage dieser Methode besteht in einem sehr leistungsstarken (aber kleinen) Arbeitsspeichers, den das Grafikmodul für das Rendering verwendet. Die GPU rendert den Bildschirm in Abschnitten (oder Kacheln), indem sie wiederholt denselben Befehlssatz für jede Kachel verarbeitet, anstatt dies für den gesamten Bildschirm auf einmal auszuführen. So sollen Vorgänge, die chipextern auf den Speicher zugreifen, minimiert und dadurch der Energieverbrauch bei hoher Leistung gering gehalten werden. Wiederholtes chipexternes Zugreifen auf den Speicher kostet viel Zeit und Energie.

Um die Effizienz dieser kachelbasierten Architekturen zu erhöhen, haben wir eine Anzahl von Kennzeichen, Hinweisen und neuen APIs hinzugefügt, die die Häufigkeit des Renderings der Kacheln minimieren können. Die Verwendung dieser Elemente wurde in die Entwicklungsplattform für Apps im Metro-Stil integriert, um eine größere Effizienz in Apps, die Grafikhardware mit kachelbasierter Rendering-Architektur verwenden, sicherzustellen.

Eine andere Methode, mit der Grafikhardware bei hoher Leistung den Energieverbrauch reduzieren kann, besteht in der Verwendung von niedrigerer Bitgenauigkeit bei den Renderingberechnungen für Grafiken. So kann die GPU die Daten effizienter strukturieren und mehr Daten gleichzeitig berechnen, sodass der Energiebedarf reduziert wird. Für Windows 8 haben wir neue Mechanismen hinzugefügt, mit denen Apps die Genauigkeit spezifizieren können, die sie für ihre Grafikberechnungen benötigen. Zum Beispiel können beim benutzerdefinierten Überblenden verschiedener Bilder mit 8-Bit-Bilddaten pro Komponente die Überblendungsberechnungen mit einer Genauigkeit von 10 Bit statt der standardmäßigen 32 Bit ausgeführt werden. Die reduzierte Genauigkeit hat keine Auswirkungen auf die Bildqualität, senkt jedoch den Energieverbrauch.

Herausragende Leistung, flüssiges Rendering


Laden Sie dieses Video herunter, und spielen Sie es in einem geeigneten Media-Player ab:
MP4 in hoher Qualität | MP4 in niedriger Qualität

Sie sehen, wir haben viel Arbeit investiert, um eine sehr schnelle und flüssig animierte Windows 8-Benutzererfahrung zu ermöglichen. Von neuen Methoden zur Messung unseres Fortschritts bis hin zu Optimierungen für Mainstream-Verwendungen unserer Grafikplattform und zu neuen Hardware-Features haben wir die bis dato beste Windows-Grafikplattform geschaffen. Und selbstverständlich sprengen wir weiterhin die Grenzen für immersives dreidimensionales Gaming mit herausragender Leistung und neuen Features wie stereoskopischem 3D.

Von High-End-Spieleausstattungen bis hin zu energiesparenden Always-On-Tablets unterstützt Windows 8 die bisher größte Bandbreite von Grafikhardware für ein einziges Betriebssystem. Wir hoffen, dass wir mit diesem Beitrag das Verständnis für verschiedene Methoden verbessert haben, mit denen vielfältige, innovative Benutzererfahrungen ermöglicht werden.

– Rob Copeland

P.S. Vielen Dank an Sriram Subramanian, Dan McLachlan, Kam VedBrat, Steve Lim und Jianye Lu für ihre maßgebliche Beteiligung an diesem Blogbeitrag.