Basics GPUs Graphics Reviews

ATI in reverse gear? 2D performance falls by the wayside | Retro Part 1 of 2

Display and 2D acceleration in the window

If we consider a two-dimensional representation within a window, only two coordinates exist: X and Y. Width and height. What is missing, however, is additional depth information. Width and height are sufficient for the time being:

The drawing of these objects is done via the so-called GDI (Graphics Device Interface). This interface for all higher programming languages contains all important functions that are needed for the representation of two-dimensional drawing objects. Further developments such as GDI and Direct2D are not to be discussed here for the time being, since the GDI plays the most important role for the 2D output of the applications until today. The most important drawing functions for pixels, lines, curves, polygons, rectangles, ellipses etc. were calculated exclusively by the CPU in the beginning.

Later, a targeted specialization of the graphics cards made it possible to achieve a hardware-based and thus also faster calculation of these two-dimensional objects. This original form of 2D acceleration is still important today, but no longer represents the sole task field of 2D acceleration. More about this in the next chapter. If Windows consisted of only one full-screen window, then we would not have to worry about the problem of different drawing layers. However, since we also want to work non-exclusively, this two-dimensional information alone is no longer sufficient. We need one more coordinate.

Simple representation of several windows without hardware acceleration:

Here, the original method behind overlapping windows is actually quite simple and obvious. You only need to know two things, namely which area of the screen or which window has changed (and thus needs to be redrawn), and which window or which object is ultimately overlapped or behind each other, or partially or completely obscured, in which order. This information is also called 2.5D layer or plane. This Z-coordinate, which is 0 or 1, is a kind of third auxiliary dimension. Therefore one speaks also of 2.5D. The Z-order can be used to determine the sequence.

First, the window content is drawn with pure 2D functions, as already known. However, it is not only the task to create full-surface content, but one must also manage this multitude of information and communicate it within the windows. So what happens when you move windows? Whenever a part of a fully or partially hidden window becomes visible (again), this window receives the system event WM_PAINT and the exact information which rectangular area has to be redrawn (“dirty rectangle”). Optimized applications will now redraw or build exactly this area. Unfortunately, there are many applications that redraw the entire window in spite of everything – no matter if it is completely visible or not. However, this is at the expense of the display speed. The consequence of this is, among other things, the well known and hated trailing effect when windows are moved quickly without hardware acceleration.

Let’s summarize what we have so far. There are individual windows that have to be brought to life by two-dimensional content. These windows, in turn, can move freely, overlap, cover each other completely or partially. Their contents have to be managed and, if necessary, displayed on the screen with as little delay as possible. We also know that the CPU itself, even though it may be fast, is actually overtaxed with this complex task. What could be more obvious than outsourcing all these tasks to the graphics card? That this reads easier than it can be implemented is what you’ll learn next.

The specialization of graphics cards initially took place in the pure 2D area. It’s no secret that these cards still perform excellently when it comes to outputting complex drawings. Many a sweetheart from days long gone has survived to this day because of this. However, these cards quickly fail in everyday use when it comes to the general interface display of current Windows versions. On the one hand, this has to do with the graphical upgrading of the interface, and on the other hand, with a limited range of functions. But first things first..

2D acceleration of drawing functions

This refers to the part of the 2D hardware acceleration that is responsible for the native output of drawing tasks of the GDI via the graphics card. This concerns on the one hand simple geometrical objects such as pixels, lines, curves, polygons, rectangles, ellipses and on the other hand the scaling, rendering and edge smoothing of fonts (TrueType, OpenType). If in the beginning one still spoke of so-called 2D units on the graphics accelerators, this specialized unit has meanwhile completely disappeared on the home user cards. The acceleration of these 2D drawing functions is done analogously to the 3D acceleration on an identical hardware and the implementation is done solely via the graphics driver.

In the second part of our article, we will present a benchmark test that we developed especially for this area, which will comprehensively test these important functions and show that drivers can fail blatantly and unexpectedly if the most basic functions are criminally neglected. Below is a small selection of a total of 9 test criteria: Text output, rectangles and curves

2.5D acceleration of surface rendering

Meanwhile, the implementation of the drawing functions is only a part of the 2D acceleration. A visible and subjectively very well perceptible acceleration can be achieved with current 3D graphics cards, which are also capable of generating the 2.5D layers mentioned in the previous section themselves in terms of hardware, managing them and displaying them as required. Initially, everything is rendered.

How does this work? Similar to the 3D display, the non-visible parts of a window are initially transferred to the graphics card in one piece as a virtual rectangular section representing the window in question, where they are completely rendered and saved. So nothing has to be “redrawn” later. The graphics card knows the size and position of these virtual rectangles at all times, and the so-called depth buffer (Z-buffer) is used to tell the card in which order (Z-order) the windows or objects are superimposed and displayed. The graphics card alone then decides on the visibility of the contents.

Let’s summarize briefly:

The 2D hardware acceleration at that time included both the implementation of the most important 2D drawing functions and the implementation of the 2.5D layer technique for the window or surface display.

It would certainly be tedious to go into detail about every single Windows version. Since the current problems, which prompted us to this test, mainly occur under Windows 7, we have limited ourselves in the following to the consideration of Windows XP, Windows Vista and of course Windows 7.

 

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,224 Kommentare 18,928 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,507 Kommentare 852 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,507 Kommentare 852 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,507 Kommentare 852 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,224 Kommentare 18,928 Likes

AMD vor NV und Intel :)

APUs gehen, iGP bei Intel eher meh

Antwort 1 Like

e
eastcoast_pete

Urgestein

1,507 Kommentare 852 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,224 Kommentare 18,928 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

Editor-in-chief and name-giver of igor'sLAB as the content successor of Tom's Hardware Germany, whose license was returned in June 2019 in order to better meet the qualitative demands of web content and challenges of new media such as YouTube with its own channel.

Computer nerd since 1983, audio freak since 1979 and pretty much open to anything with a plug or battery for over 50 years.

Follow Igor:
YouTube Facebook Instagram Twitter

Werbung

Werbung