Diskussion:Bit blit

aus Wikipedia, der freien Enzyklopädie
Letzter Kommentar: vor 2 Jahren von 93.229.162.195 in Abschnitt Windows Beschleuniger
Zur Navigation springen Zur Suche springen

Atari 800 xl hatte keinen Blitter[Quelltext bearbeiten]

So weit ich weiß, hatte der Atari 800 xl keinen Blitter, auch wenn man manchmal die Behauptung im Netz findet. (nicht signierter Beitrag von 85.178.222.208 (Diskussion) 01:00, 14. Mär. 2006‎)

Bitte verbessern[Quelltext bearbeiten]

Aus diesem Text geht nicht genau hervor wie der Blitter funktioniert. --Huberdaniel 22:53, 2. Feb. 2007 (CET)Beantworten

Der Bitte kann ich mich nur anschließen. Er erklärt die Technik überhaupt nicht. --93.229.162.195 12:28, 14. Dez. 2021 (CET)Beantworten

Windows Beschleuniger[Quelltext bearbeiten]

"Zunächst wurden solche Grafikkarten auch als „Windows-Beschleuniger“ bezeichnet, weil sie den Prozessor von der Notwendigkeit entlasteten, die Daten über den ISA-Bus zu übertragen. Wenn dies innerhalb der Grafikkarte durch den Grafikprozessor in separatem Grafik-RAM erfolgt, wird auch hier die CPU und der normale Arbeitsspeicher entlastet. Man spricht hier auch von 2D-Beschleunigung. Sie obliegt, wie auch die später eingeführte 3D-Beschleunigung, dem Grafikprozessor."

Tschuldigt Leute, aber das ist Mumpitz. Die von 1993 bis 1997 gerne verwendete Bezeichnung "Windows Beschleuniger" oder "Accelerator-Karte" ist eine Marketingbezeichung für die Chipsätze von S3 der 800er und 900er Serie sowie den Chipsätzen der Vision und Trio x64 Serie. Allen ist jedoch gemeinsam, dass sie über keine GPU verfügen, sondern es sich um reguläre passive Chipsätze handelt. Einen Blitter haben alle nicht.

Selbst wenn diese Chipsätze einen Blitter besitzen würden, so hätte das damals nicht viel gebracht, weil die GDI erst ab GDI+ (Windows xp) Blitting unterstützte und erst mit Windows 7 (!) mit WDDM 1.1 kam man einmal auf die Idee, dies auch hardwarebasiert zu unterstützen.

Das was die Acceleratorkarten von den normalen auf ET3000 oder ET4000 basierenden SVG-Karten unterschied, waren besonderer Addresserungsmodi, welcher der CPU den Speicherzugriff auf den Graphikspeicher erheblich erleichterte und damit beschleunigte. Ein Bild mit sagen wir 1024*768 Bildpunkten bei 256 Farben benötigte 786.432 Byte im Grafikspeicher. Die meisten Karten damals hatten 1MB. Das Problem war nun, das Windows 3.x noch 16 Bit Programme waren und das Ansprechen eines linearen Speicherblocks von mehr als 64kb nicht möglich war. Es konnte immer nur ein Block von 64kb in den Adressraum eingeblendet werden, was bei obiger Auflösung zur Aufteilng in 12 Blöcke führte. Sollte also ein Bildpunk gezeichnet werden, dann musste zuerst ermittelt werden, welcher Block eingeblendet werden musste und dann der Offset innerhalb dieses Block berechnet werden.

Beispiel: Zeichne einen Bildpunkt an Position 1000*700 mit 8Bit Farbtiefe. Linear wäre dies die 700000ste Speicheradresse in einem linearen Speicher.

  • Ermittle den zughörigen Speicherblock: 700000 MOD 65536 = 10
  • Speicherblock 10 in das VGA-Adressraumfenster einblenden
  • Von 700000 den Basis Offset (65536*10)= 655360 abziehen ergibt 44640 -> das ist die Offsetadresse innerhalb des Blocks
  • Bildpunkt setzen

Die Nummer war sehr aufwändig und die Umschaltung der Segment teuer. Wer dann noch bei dieser Auflösung 24 Bit fahren wollte, der hatte mit 36 Segmenten zu kämpfen, weshalb man sich bei Spielen gerne auf Mode 13h oder Mode x beschränkte - man hatte dann zwar nur eine Auflösung von 320*200 bei 256 Farben, kam aber mit einem Segment aus und die teure Umrechnung entfiel. Unter Windows ging dies jedoch nicht, weshalb sich Windows auch nicht für Spiele eignete.

Acceleratorkarten boten das Konzept eines Linear Address Window Controls. Damit konnte der Blockanfang auf jeden beliebigen Bildpunkt gelegt werden. Gebracht hat dies aber nur etwas im unter Window 3.x. Problematisch war nun, dass GDI dafür eigentlich nicht ausgelegt war, weshalb MicroSoft WinG herausbrachte (Vorläufer von DirectX), der diese Modi besser unterstützte. Ab Windows 95 liefen die Treiber im 32Bit Protected Mode und eine PCI-Grafikkarte konnte linear angesprochen werden.

Mit Hardware-Blitting hatte dies aber nichts zu tun. Nach wie vor musste die CPU die Speicherbereiche umkopieren - nur ging das nun erheblich schneller, weil ein Teil der Umrechnung entfiel. Thomas Merbold (Diskussion) 13:21, 14. Aug. 2013 (CEST)Beantworten

Kleine Ergänzung noch: Ein Hardwareblitter mit DMA macht nur unter eine UMA (Unified Memory Architekture) Sinn. VGA im PC ist/war aber genau der Antientwurf dazu, da die Karten ihren eigenen Speicher mitbringen, auf dem die CPU nichts zu sagen hat. Dies gilt im Prinzip bis heute. Die modernen GPUs in den GeForce-Modellen unterstützen wunderbar 3d, mit 2d sieht es aber auch mager aus. Wer das möchte oder braucht, sollte daher zu den Quadro-Pro Chipsätzen greifen. Für "normales" 2d auf einem Monitor ist jedoch heute jede CPU schnell genug - Quadro-Pro macht nur auf Workstations sinn, die bis zu vier Monitore á 2500*1440 Bildpunkte ansteuern. 79.212.137.184 23:00, 30. Aug. 2014 (CEST)Beantworten
Bei den Geforce Karten hat man ab der Geforce 8 Serie die ganzen festverdrahteten 2d und 3d Hardwarefunktionen rausgeschmissen weil man das alles mit den programmierbaren GPU Funktionen gut emulieren kann und man somit viele Transistoren bzw. Fläche auf dem GPU-Die einsparen konnte, die man dann für heute sinnvollere Dinge, wie eben weitere Unified Shader Einheiten und Co nutzen kann. Es gibt hier somit zwischen der Geforce 7 Serie, die noch diese festverdrahteten 2d und 3d Funktionen alle in Hardware hatte und den Karten ab der Geforce 8 Serie, die das mit den Shadern in Software emulieren einen Bruch. In Einzelfällen kann das sogar dazu führen, das manche Grafikanwendung auf einer Geforce 7 besser läuft, als auf einer Geforce 8. Besonders bemerkbar ist das bei den festverdrahteten 3d Funktionen und älteren Spielen, die davon Gebrauch machen. Das Spiel Gunship! (Teil 3) aus dem Jahr 1999 läuft bspw. auf einer Geforce 7 wesentlich flüssiger, als das gleiche Spiel auf einer eigentlich viel leistungsfähigeren Geforce 8. Das konnte ich auf eigener Hardware selber testen. --93.229.162.195 13:29, 14. Dez. 2021 (CET)Beantworten
Der Artikel Grafikprozessor sagt aber auch dass damals bereits Blitting Funktionen vorhanden waren: "Das änderte sich Mitte der 1980er Jahre mit Rechnern wie dem Commodore Amiga oder dem Atari ST. Diese verfügten bereits über Blitting-Funktionen. Im x86-PC-Bereich kamen Grafikprozessoren mit solchen Zusatzfunktionen mit dem Übergang von textbasierten DOS-Programmen zu grafikbasierten Windows-Programmen auf. Bausteine wie der ET-4000 konnten einfache Befehle (z. B. „zeichne Viereck“) selbständig abarbeiten. Wegen des hauptsächlichen Einsatzes unter Windows wurden sie auch „Windows-Beschleuniger“ genannt." Rabauz 16:46, 6. Aug. 2015 (CEST)Beantworten
Ab VESA BIOS Extension VBE 2.0 war linearer framebuffer Zugriff im protected mode möglich. VESA VBE 2.0 gibt es seit 1994. Ab dieser Zeit kamen dann auch die ersten DOS Spiele mit höheren Auflösung und mehr Farben, die dann gleich diese VESA VBE Grafikmodi nutzen (ein bekanntes Beispiel wäre bspw. Duke Nukem 3d ab 1996, das war noch ein reiner Software Renderer ohne Hardwarebeschleunigung, aber VESA VBE 2.0 war für die SVGA Modi notwendig) Mit dem VESA VBE/accelerator functions Standard ab August 1996 gab es dann Bit Blit standardisiert in Hardware. Grafikkarten mit 2d Beschleunigerfunktionen in Hardware gab es im professionellen Bereich bereits schon viele Jahre früher, sogar noch als lediglich nur VGA ohne SVGA und VESA Standard war, aber um diese speziellen Funktionen nutzen zu können, brauchten diese alle einen dafür dedizierten Treiber oder die Anwendungen mussten speziell dafür geschrieben sein bzw. bot die DOS Anwendung eine eigene Treiberschnittstelle, so dass das nicht universell nutzbar war und nur für Profi CAD und Zeichen Programme verwendet wurde. Für Spiele betrieb man diesen Aufwand nicht, zumal diese Profi Grafikkarten auch damals sündhaft teuer waren. Erst mit der VESA Standardisierung kamen dann Grafikkarten mit vergleichbaren Funktionen für den Privatanwender auf den Markt, die Bezeichnung Windowsbeschleuniger ist hier ineinandergreifend.
Denn Windows 3.x gab es vor VESA VBE 2.0 und VESA VBE und in Windows wurde die Grafikschicht durch Treiber abstrahiert, so dass es für die Anwendungen einen einfachen standardisierten Zugriff gab um diese Hardwarefunktionen nutzen zu können. Für Windows 3.0 gab es den Erweiterte Modus für 386 und ab Windows 3.1 auch eine entsprechende Win32 API für Windows GUI Anwendungen. WinG kam mit Windows 3.1 und war dazu gedacht, den Spielen einen direkteren Weg ohne Umweg über die GDI zu ermöglichen, denn bei Spielen braucht man keine Ausgabemöglichkeit auf den Drucker, was GDI konnte. Außerdem bot WinG bitBlt und StretchBlt in der API und für Hardware die das in Hardware konnte, brauchte man nur noch entsprechende Treiber und schon waren diese Features von WinG aus abstrahiert durch die API aus zugänglich. WinG endete dann später in Direct2d, ein Teil von DirectX.
Mit GDI+ in Windows XP hat das nichts zu tun. GDI war nie für Spiele gedacht, auch nicht in Form von GDI+. Der Grund warum man bei Spielen lieber die obigen VESA VBE 2.0 Modi unter DOS nutzte, als auf WinG von Windows 3.1 zurückzugreifen lag schlichtweg darin, weil DOS eine größere Verbreitung hatte und Windows 3.1 extra Ressourcen benötigte, die ein einfacher DOS/4G Extender nicht erforderte. Das änderte sich dann erst, als Arbeitsspeicher immer günstiger wurde, aber da war dann schon Windows 9x auf dem Markt, so dass man die Spiele gleich lieber für DirectX und Windows 9x entwickelte. --93.229.162.195 13:06, 14. Dez. 2021 (CET)Beantworten