Grafikkarten Grundlagenartikel Testberichte VGA

ATI im Rückwärtsgang? 2D-Leistung bleibt auf der Strecke | Retro Teil 1 von 2

Darstellung und 2D-Beschleunigung im Fenster

Betrachtet man eine zweidimensionale Darstellung innerhalb eines Fensters, so existieren nur zwei Koordinaten: X und Y. Breite und Höhe. Was jedoch fehlt, ist eine zusätzliche Tiefeninformation. Breite und Höhe reichen zunächst völlig aus:

Das Zeichnen dieser Objekte erfolgt über das sogenannte GDI (Graphics Device Interface). Diese Schnittstelle für alle höheren Programmiersprachen enthält alle wichtigen Funktionen, die zur Darstellung zweidimensionaler Zeichenobjekte benötigt werden. Weiterentwicklungen wie GDI+ und Direct2D sollen jetzt an dieser Stelle zunächst nicht thematisiert werden, da das GDI bis heute die wichtigste Rolle für die 2D-Ausgabe der Anwendungen spielt. Die wichtigsten Zeichenfunktionen für Pixel, Linien, Kurven, Polygone, Rechtecke, Ellipsen usw. wurden anfangs ausschließlich von der CPU berechnet.

Durch eine zielgerichtete Spezialisierung der Grafikkarten konnte man später eine hardwarebasierte und damit auch schnellere Berechnung dieser zweidimensionalen Objekte erreichen. Diese ursprüngliche Form der 2D-Beschleunigung ist auch heute noch von Bedeutung, stellt aber nicht mehr das alleinige Aufgabenfeld einer 2D-Beschleunigung dar. Dazu im nächsten Kapitel mehr. Bestünde Windows nur aus einem einzigen Vollbildfenster, dann müsste man sich um die Problematik verschiedener Zeichenebenen keine Gedanken machen. Da wir jedoch auch nicht-exklusiv arbeiten möchten, reichen diese zweidimensionalen Informationen allein nicht mehr aus. Wir brauchen noch eine weitere Koordinate.

Einfache Darstellung mehrerer Fenster ohne Hardwarebeschleunigung:

Dabei ist die ursprüngliche Methode, die hinter überlappenden Fenstern steckt, eigentlich recht einfach und naheliegend. Man muss lediglich zwei Dinge wissen, nämlich welcher Bereich des Bildschirms bzw. welches Fenster sich geändert hat (und damit neu zu zeichnen ist) und welches Fenster oder welches Objekt letztendlich in welcher Reihenfolge über- oder hintereinander liegt bzw. teilweise oder ganz verdeckt ist. Diese Information nennt man auch 2.5D-Layer bzw. –Ebene. Diese Z-Koordinate, die 0 oder 1 ist, ist eine Art dritte Hilfsdimension. Deshalb spricht man auch von 2.5D. Durch die Z-Order kann die Reihenfolge bestimmt werden.

Zunächst wird der Fensterinhalt, wie bereits bekannt, mit reinen 2D-Funktionen gezeichnet. Es ist aber nicht nur die Aufgabe, vollflächige Inhalte zu erstellen, sondern man muss diese Vielzahl von Informationen auch verwalten und innerhalb der Fenster kommunizieren. Was passiert nun, wenn man Fenster verschiebt? Immer dann, wenn ein Teil eines ganz oder teilweisen verdeckten Fensters (wieder) sichtbar wird, erhält dieses Fenster das Systemereignis WM_PAINT und die genauen Informationen, welcher rechteckige Bereich neu zu zeichnen ist („dirty rectangle“). Optimierte Anwendungen werden nun exakt diesen Bereich neu zeichnen bzw. aufbauen. Leider gibt es viele Anwendungen, die trotz allem das gesamte Fenster neu zeichnen –  egal, ob nun komplett sichtbar oder nicht. Dies geht jedoch zu Lasten der Anzeigegeschwindigkeit. Folge davon ist unter anderem der gut bekannte und gehasste Nachzieheffekt, wenn man Fenster ohne Hardwarebeschleunigung schnell verschiebt.

Fassen wir zusammen, was wir bis jetzt haben. Es existieren einzelne Fenster, die durch zweidimensionale Inhalte zum Leben erweckt werden müssen. Diese Fenster wiederum können frei bewegt werden, sich überlappen, gegenseitig ganz oder teilweise verdecken. Deren Inhalte müssen verwaltet und bei Bedarf möglichst verzögerungsfrei am Bildschirm angezeigt werden. Wir wissen zudem, dass die CPU selbst, auch wenn sie schnell sein mag, mit dieser komplexen Aufgabenstellung eigentlich überfordert ist. Was liegt näher, als all diese Aufgaben auf die Grafikkarte auszulagern? Dass sich dies einfacher liest, als es sich umsetzen lässt, das erfahren sie als Nächstes.

Die Spezialisierung der Grafikkarten erfolgte zunächst im reinen 2D-Bereich. Dass diese Karten noch heute exzellente Leistungen bringen, wenn es darum geht, komplexe Zeichnungen auszugeben, das ist kein Geheimnis. Noch so manches Schätzchen aus längst vergangenen Tagen hat sich dadurch bis heute das Überleben gesichert. Jedoch versagen diese Karten schnell im Alltag, wenn es um die allgemeine Oberflächendarstellung aktueller Windows-Versionen geht. Dies hat einerseits mit der grafischen Aufwertung der Oberfläche und andererseits mit einem beschränkten Funktionsumfang zu tun. Doch der Reihe nach…

2D-Beschleunigung von Zeichenfunktionen

Darunter versteht man den Teil der 2D-Hardwarebeschleunigung, der für die native Ausgabe von Zeichenaufgaben des GDI über die Grafikkarte zuständig ist. Das betrifft einerseits einfache geometrische Objekte wie Pixel, Linien, Kurven, Polygone, Rechtecke, Ellipsen und andererseits das Skalieren, Rendern und Kantenglätten der Schriften (TrueType, OpenType). Sprach man anfangs noch von sogenannten 2D-Einheiten auf den Grafikbeschleunigern, so ist diese spezialisierte Einheit mittlerweile auf den Heimanwenderkarten völlig verschwunden. Die Beschleunigung dieser 2D-Zeichenfunktionen erfolgt analog zur 3D-Beschleunigung auf einer identischen Hardware und die Implementierung erfolgt einzig und allein über den Grafiktreiber.

Wir werden im zweiten Teil unseres Artikels einen speziell von uns für diesen Bereich entwickelten Benchmarktest vorstellen, der diese wichtigen Funktionen umfassend testen wird und zeigt, dass Treiber eklatant und unerwartet versagen können, wenn man die grundlegendsten Funktionen sträflich vernachlässigt. Nachfolgend eine kleine Auswahl von insgesamt 9 Testkriterien: Textausgabe, Rechtecke und Kurven

2.5D-Beschleunigung der Oberflächendarstellung

Das Umsetzen der Zeichenfunktionen ist mittlerweile jedoch nur ein Teil der 2D-Beschleunigung. Eine sichtbare und subjektiv sehr gut wahrnehmbare Beschleunigung lässt sich durch aktuelle 3D-Grafikkarten erzielen, die zudem in der Lage sind, die im vorigen Abschnitt erwähnten 2.5D-Layer selbst hardwaremäßig zu erzeugen, zu verwalten und bedarfsgerecht anzuzeigen. Gerendert wird zunächst alles.

Wie funktioniert das? Ähnlich wie bei der 3D-Darstellung werden auch die nicht sichtbaren Teile eines Fensters zunächst als virtueller rechteckiger Ausschnitt, der stellvertretend für das betreffende Fenster steht, in einem Stück an die Grafikkarte übergeben und dort komplett gerendert und gespeichert. Es muss also später nichts „nachgezeichnet“ werden. Die Grafikkarte kennt jederzeit Größe und Position dieser virtuellen Rechtecke und über den sogenannten Tiefenpuffer (Z-Buffer) teilt man der Karte mit, in welcher Reihenfolge (Z-Order) die Fenster bzw. Objekte übereinander liegen und dargestellt werden. Über die Sichtbarkeit der Inhalte entscheidet dann die Grafikkarte allein.

Fassen wir einmal kurz zusammen:

Die damalige 2D-Hardwarebeschleunigung beinhaltetete sowohl die Implementierung der wichtigsten 2D-Zeichenfunktionen, als auch die Umsetzung der 2.5D-Layertechnik für die Fenster- bzw. Oberflächendarstellung.

Es wäre sicher ermüdend, auf jede einzelne Windows-Version näher einzugehen. Da die aktuellen Probleme, die uns zu diesem Test veranlasst haben, vor allem unter Windows 7 auftreten, haben wir uns im Folgenden auf die Betrachtung von Windows XP, Windows Vista und natürlich Windows 7 beschränkt.

 

Kommentar

Lade neue Kommentare

MechUnit

Mitglied

64 Kommentare 38 Likes

Interessanter Hintergundbericht.

Damals (Windows 1.0-3.00) war eben das Amiga OS aufgrund des Systems mit seinen Co-Prozessoren (für 2D hauptsächlich Blitter) und echten überlappenden Fenstern besser, von der schon damals unerschütterlichen Stabilität einmal abgesehen.

Das Mac OS setzte nochmal einen drauf. Auch da gab es ja fast von Anfang an quasi integrierte Hardwarebschleunigung für 2D-Anwendungen.

Dann gab es ja noch SGI-OS - ein Traum.

Präemptives Multitasking und schnelles, flüssiges Arbeiten war man also hier auf den 3 o.g. Systemen schon gewohnt. Ok, auf A500 & A1000 war aufgrund des langsameren Motorola 68000-Prozessors und 512kb-, bzw. 1 MB Chip-RAM und ohne HDD mit Diskettenzugriff die Lade- und Arbeitsgeschwindigkeit etwas langsamer. Dennoch war das ein besseres Gefühl und komfortabler als noch mit Windows 1.0, geschweige denn DOS - dank Blitter und Copper mit nicht 100 dazwischenfunkenden Treibern und Schnittstellen. Die im System fest integrierte Hardware war eben fest im OS integriert. Angebundene Hardware und deren Treiber wurden "hinten dran" geschoben. Reflections, Video Toaster, Cinema 4D oder Lightwave (die beiden letztgenannten dann schon auf AGA-Maschinen aka A4000, später mit Power PC u.a. in Verbindung mit Silicon Graphics) liefen wie Butter. 2,5D-Layer und deren Beschleunigung spielten da aber auch noch keine Rolle.

Das war aber auch ein Vorteil der damaligen geschlossenen Systeme mit aufs Leib zugeschnittenen Betriebssystemen. Der PC war ja offen und es musste ja schon damals auf unterschiedlichen Systemen das OS möglichst performant und stabil laufen. Damit war (und ist) ein PC nicht nur von der dedizierten, modularen Hardware abhängig, sondern auch über seine Schnittstellen und Treiber. Wenn dann noch die 2D-Unterstützung schlecht oder gar nicht integriert ist (schlimmstenfalls noch auf Hardware-, OS-, Schnittstellen- und Treiberebene) fehlt, ist das für flüssiges Arbeiten im Betriebssystem ein Desaster. Das merkte man sogar später tw. in Windows NT oder 2000 auf professionellen Maschinen. Es stockte halt mal oder es gab "Denkpausen".

Ein gutes Beispiel hierfür waren damals auch Emulatoren. Man merkte direkt, wenn auf Hardwareebene einfach die 2D-Beschleunigung fehlte und die CPU dann mehr schuften musste.

Antwort 2 Likes

Klicke zum Ausklappem
Lagavulin

Veteran

229 Kommentare 187 Likes

Vielen Dank für den interessanten Blick zurück in die 2010er Jahre. Habe ich mit großem Interesse gelesen, weil ich mich damals noch gar nicht mit PC-Technik beschäftigt habe. Spannt man einen zeitlichen Bogen von ATI bis zum 12VHPWR, dann ist Igor‘sLab für mich wirklich so etwas wie „CSI Chemnitz“ im PC-Bereich.

Antwort 1 Like

F
Furda

Urgestein

663 Kommentare 371 Likes

Irgendwo in dieser Zeit da, wohl noch unter WinXP, hatte ich noch einer der letzten Karten von ATI mit AGP Schnittstelle in Betrieb, als der endgültige Wechsel zu PCI vollzogen geworden war.

Der Artikel hat einige Trigger, bin mal auf den 2. Teil gespannt.

Auf alle Fälle, die Einleitung hier birgt für mich schon jetzt das grösste Ausrufezeichen, nämlich, dass man den Finger in die Wunde drücken muss, um eine Änderung/Verbesserung zu erwirken. Damals schon so und heute immer noch brandaktuell. Da hatte ATI offenbar, wie auch alle anderen immer, negativ darauf reagiert, anstatt einsichtig und konstruktiv sein zu wollen. Von ATIs Treiber-Kultur hat wohl bis heute ein Teil bei AMD überlebt.

Antwort 1 Like

Igor Wallossek

1

10,220 Kommentare 18,922 Likes

Das missgünstige Treiber Team firmiert heute immer noch unter ATI in Toronto und es sind die gleichen Leute, die heute alles verdongelt haben, weil sie das MorePowerTool nicht wollen. Das geht schon seit Jahren so :D

Antwort 4 Likes

Derfnam

Urgestein

7,517 Kommentare 2,029 Likes

Toronto Trittchen - guten Feinden gibt man ein Trittchen. Oder 2.
Wobei ich Ati & the Vandalers mit 'Nowhere Toronto' bevorzuge.

Die damaligen Kommentare unter bzw zu den Artikeln läs ich zu gern nochmal.

Antwort Gefällt mir

Derfnam

Urgestein

7,517 Kommentare 2,029 Likes

Alles gut und schön, @Igor Wallossek, aber ich wollte schon ein wenig Wehmut fühlen wegen der alten Köppe.

Antwort Gefällt mir

C
ChaosKopp

Urgestein

551 Kommentare 561 Likes

Ich erinnere mich noch gut an die zugrunde liegenden Artikel und die Emsigkeit, die Du damals ausgelöst hast

Auch wenn die Treiber-Truppe Dich damals hasste, hast Du das Produkt selbst massiv vorangetrieben.

Eigentlich wäre Dankbarkeit angemessen gewesen.

Antwort Gefällt mir

e
eastcoast_pete

Urgestein

1,505 Kommentare 850 Likes

Ja, wenn man darauf hinweist, daß der König nackt dasteht oder der tolle GPU Treiber für die neueste Karte kaum 2D packt, macht man sich schnell unbeliebt. Auch wenn man damit, so wie hier @Igor Wallossek , ATI einen großen Gefallen hattest, denn die Käufer finden solch unterirdische Leistung gar nicht gut. Wie heißt es so schön im Englischen: " No good deed goes unpunished". ATI, anstatt sich zu schämen und für den Hinweis zu danken, wurde ärgerlich und nachtragend.

Antwort Gefällt mir

e
eastcoast_pete

Urgestein

1,505 Kommentare 850 Likes

Der Toaster auf den großen Amigas waren ja aus gutem Grund jahrelang das Kit der Wahl bei frühen CGI Geschichten. SGI Workstations waren klar besser, aber wer hatte schon soviel Geld? Die waren nämlich richtig teuer, für das Geld konnte man schon ein sehr schönes Auto (Oberklasse, keinen Golf 😀) kaufen .

Antwort 1 Like

MechUnit

Mitglied

64 Kommentare 38 Likes

Allerdings - das waren Preise jenseits von gut und böse :D

Antwort 1 Like

e
eastcoast_pete

Urgestein

1,505 Kommentare 850 Likes

Waren (und sind) sehr gute Hintergrund Artikel, danke @Igor Wallossek für das Encore! Und jetzt ein paar Fragen zum Stand der Dinge 2023: wie sieht es denn heutzutage mit Unterstützung von 2D und 2.5D Grafik aus? Sind die iGPUs hier eigentlich immer noch gleichauf (oder besser?) als viele dGPUs, und gibt's hier Unterschiede zwischen Intel iGPUs und den AMD APUs?

Antwort Gefällt mir

Igor Wallossek

1

10,220 Kommentare 18,922 Likes

AMD vor NV und Intel :)

APUs gehen, iGP bei Intel eher meh

Antwort 1 Like

e
eastcoast_pete

Urgestein

1,505 Kommentare 850 Likes

Danke! Auch und gerade wenn man doch einiges machen will, das nach wie vor 2 bzw 2.5D ist; vor allem wenn mehrere UHD Monitore befeuert werden sollen. Interessant, daß AMD aus dem Debakel damals gelernt hat, auch wenn Toronto immer noch schmollt 😁

Antwort 1 Like

P
Postguru

Mitglied

39 Kommentare 7 Likes

Und heute mit einer 6900XT unter Win10
Direct drawing to visible device:
BENCHMARK: DIB-BUFFER AND BLIT

Text: 23245 chars/sec
Line: 28631 lines/sec
Polygon: 12435 polygons/sec
Rectangle: 3229 rects/sec
Arc/Ellipse: 15193 ellipses/sec
Blitting: 14961 operations/sec
Stretching: 1107 operations/sec
Splines/Bézier: 17800 splines/sec
Score: 201

DIB Buffering:
BENCHMARK: DIB-BUFFER AND BLIT

Text: 60096 chars/sec
Line: 151668 lines/sec
Polygon: 631579 polygons/sec
Rectangle: 5491 rects/sec
Arc/Ellipse: 347222 ellipses/sec
Blitting: 58207 operations/sec
Stretching: 7123 operations/sec
Splines/Bézier: 70822 splines/sec
Score: 4510

scheint einiges besser zu laufen .. jedenfalls gepuffert ;)

Antwort Gefällt mir

Igor Wallossek

1

10,220 Kommentare 18,922 Likes

DIB geht direkt in den Speicher, Direct Draw jeder einzelne Pups durch die Renderpipeline.

Antwort Gefällt mir

Danke für die Spende



Du fandest, der Beitrag war interessant und möchtest uns unterstützen? Klasse!

Hier erfährst Du, wie: Hier spenden.

Hier kannst Du per PayPal spenden.

About the author

Igor Wallossek

Chefredakteur und Namensgeber von igor'sLAB als inhaltlichem Nachfolger von Tom's Hardware Deutschland, deren Lizenz im Juni 2019 zurückgegeben wurde, um den qualitativen Ansprüchen der Webinhalte und Herausforderungen der neuen Medien wie z.B. YouTube mit einem eigenen Kanal besser gerecht werden zu können.

Computer-Nerd seit 1983, Audio-Freak seit 1979 und seit über 50 Jahren so ziemlich offen für alles, was einen Stecker oder einen Akku hat.

Folge Igor auf:
YouTube   Facebook    Instagram Twitter

Werbung

Werbung