Wie kennt eine GPU die Adresse jedes einzelnen Pixels auf einem Bildschirm? Wenn ja, wie geht es mit hochauflösenden Bildern um?

816
CasualGenius

Ich weiß, wie Bitmaps funktionieren und wie Pixel verwendet werden (binäre 0 oder 1). Ich kenne mich auch mit RGB aus, aber ich frage mich, wie GPUs die Adresse jedes Pixels auf einem hochauflösenden Bildschirm kennen und wie die GPU Informationen an die Pixel sendet. Kann jemand das beantworten?

0
http://stackoverflow.com/questions/7457391/how-does-a-computer-draw-the-screen Sie können auch mehr über Frame-Puffer lesen, indem Sie dem Link in der Antwort folgen. Es ist ziemlich interessantes Zeug. DrZoo vor 7 Jahren 0
Es "kennt" die Adresse eines Pixels überhaupt nicht, es muss nicht. Sie müssen dem Monitor lediglich das Datenformat, die Größe des Bildschirms und die Anzahl der angezeigten Bytes mitteilen und dann viele Byte-Gruppen senden, die angeben, welche Farbe als nächstes kommt. Es handelt sich dabei um eine Reihe von Daten, und es ist Sache des Monitors, die Daten in die vom Panel erwarteten Signale zu decodieren. Sie müssen sehen, wie CRT-Monitore funktionieren. Neue Monitore arbeiten auf ähnliche Weise mit digitalen Daten Mokubai vor 7 Jahren 0

2 Antworten auf die Frage

0
Ale..chenski

Eine GPU verfügt über einen Speicher für die Videoausgabe. Jedes Pixel hat eine genaue Adresse. GPU rendert Bilder und legt sie in diesem Videopuffer ab. Dann "scannt" ein dedizierter Hardware-Block diesen Speicher und überträgt den Inhalt in den Video-Port (VGA, HDMI, DVI, was auch immer). Ein Monitor empfängt diese Informationen und zeigt sie an. Aber sind diese Informationen nicht in einem Wiki frei verfügbar?

0
hurikhan77

Dazu müssen Sie lediglich den gesamten Speicherpuffer mit Ihrer Aktualisierungsrate zum Ausgangsanschluss kopieren. Das heißt, auf einem Standardmonitor mit DVI-Anschluss würde er 60-mal pro Sekunde Vollbilder von 1920 x 1080 Pixeln mit 24 Bit pro Pixel (8 Bit RGB-Tiefe) senden. Dies ist eine Menge Daten und erfordert hochwertige, kurze Kabel.

Intern kann es viel komplizierter werden. Normalerweise enthält der Video-RAM 2 oder 3 Puffer von Bilddaten (Doppelpufferung oder Dreifachpufferung, um das Abreißen zu verringern. Dies bedeutet im Wesentlichen, dass der Puffer, der an den Ausgangsconnector gesendet wird, nicht von den Betriebssystemtreibern modifiziert wird).

Und es kann noch komplizierter werden: Der Ausgangsstecker kann analog sein, was bedeutet, dass es einen DAC gibt, der jedes Signal in analoge Signale umwandelt. Oder der RAM kann eine höhere Bittiefe als der Monitor verwenden (10 Bit pro Farbe = 30 Bit pro Pixel), Grafikkarten können zeitliches Dithering verwenden, wenn das Ausgabegerät eine niedrigere Bittiefe aufweist (der Fehler von 2 Bit wird also auf das nächste Bit verteilt) Rahmen, der zu sichtbarem, leichtem Rauschen führen kann, jedoch bessere Farbschattierungen ergibt).

Und noch komplizierter: Einige GPUs ordnen ihren Speicher nicht auf dieselbe Weise an, wie sie auf dem Monitor angezeigt werden (Pixelzeilen von oben links nach rechts unten), sondern ordnen ihren Speicher in Zellen (Rechtecke der Bilddaten) an - dies ist der Fall konvertiert werden, kann jedoch zu einer höheren Leistung des VRAM-Zugriffs führen, da der gleichzeitige Zugriff von GPU, CPU und Signalprozessor besser gegeneinander verteilt ist.

Grundsätzlich ist es sehr einfach: Die Daten werden lediglich Pixel für Pixel vom RAM-Puffer zum Ausgangsconnector kopiert, wobei sich der Bildpuffer bei jedem Senden eines vollständigen Frames meist zwischen den Kopien ändert. Der Monitor folgt demselben Zeitmuster und zeichnet die Pixel. Bei jedem Frame werden die Timer erneut synchronisiert, so dass der Monitor oben links beginnt.