Lowlevel

Lowlevel => Lowlevel-Coding => Thema gestartet von: Netmaster am 12. April 2005, 00:08

Titel: Grafikkartenstandards?
Beitrag von: Netmaster am 12. April 2005, 00:08
Ich wollte fragen, ob irgendwelche Hardwarestandards für Grafikkarten (3D) existieren, damit meine ich die Register und Grafikkartenbios-Interrupts (Ich meine damit nicht Int10). Wäre es möglich einen 3D-tauglichen Treiber für alle NVIDIA[ATI] Chips zu schreiben?
Titel: Grafikkartenstandards?
Beitrag von: BigOlly am 12. April 2005, 02:22
Tja Netmaster, das ist ja das große Problem mit den Grafikkarten....!
Die Antwort lautet NEIN! Es gibt keine "Standards" die über VGA und VESA hinausgehen.
Die Grafikkarten-Hersteller halten ihre Register, Befehle und Strukturen ihrer Chips streng geheim. Dies gilt sogar für ältere Chips wie Riva, Rage, Trio64 oder ET4000.

Also gilt:
Komm mit VESA aus oder zerpflücke die Linux-Treiber um herauszufinden wie was angesteuert wird.

Gruß BigOlly
Titel: Grafikkartenstandards?
Beitrag von: joachim_neu am 12. April 2005, 13:14
warum sollte man nicht mit vesa auskommen? man kann ja auch 3D mit vesa machen...
Titel: Grafikkartenstandards?
Beitrag von: elfish_rider am 12. April 2005, 13:53
irgendwann wird mit VESA dann die Leistung knapp...
Titel: Grafikkartenstandards?
Beitrag von: Roshl am 12. April 2005, 16:22
Mein OS (Das recodet wird) hat 3D berechnungen drin, sogar mit Licht das aus der Perspektive kommt wenn man so will^^. So schwer ist es nicht, man muss nur extrems viel Ahnugn von Mathe haben^^
Aber es gibt eine Karte für die die Register und Befehle veröffentlicht wurden. Vodoo Banshee (2D und 3D) die erste Karte die überhaupt 3D-Unterstützung bot, sie verrichtet in meinem Rechner ihren Dienst^^
Kannst ja mal danach googlen.
Neben diesen Infos wirst du auch auch welche zu PCI brauchen, und die sind auch nicht einfach zu finden (hab bisher keine wirklich brauchbaren).
Aber abgesehen von dieser einen Karte kannst du es definitiv vergessen.
Titel: Grafikkartenstandards?
Beitrag von: Svenska am 12. April 2005, 18:20
Blieben noch ganz alte Karten ohne 3D-Unterstuetzung, fuer die teilweise auch die Specs offen sind; ich sah irgendwo mal die genauen Register der Trident-Chips von '92 oder so. Aber damit kannst du 3D sowieso vergessen.
Wie BigOlly sagte - du kannst gern die Linuxtreiber zerpfluecken. Die kommen zwar bei weitem nicht an die Leistung der offiziellen Treiber ran, aber besser kannst du es auch nicht tun. Vor diesem Problem steht ja Linux langsam.

Aber du kannst ja eine Art Layer schreiben, wo du also einen Treiber zwischenschieben kannst. Dann codest du zuerst einen VESA-Treiber und wenn dir die Leistung nicht ausreicht, bastelst du mit einem anderen Treiber rum, dessen Sourcen du von irgendwoher hast ... :)

Svenska (...der immer zu viel schreibt)
Titel: Grafikkartenstandards?
Beitrag von: Netmaster am 12. April 2005, 22:18
Thx für die Antworten... Tja, scheinbar ist die Software-Emulation die einfachste Lösung  :(

Trotzdem danke :D
Titel: Grafikkartenstandards?
Beitrag von: joachim_neu am 14. April 2005, 15:35
jap, benutz VESA und fertig, alles andere ist unnötig und du musst für alles nen treiber schreiben.
Titel: Grafikkartenstandards?
Beitrag von: Roshl am 14. April 2005, 17:16
Lass dein OS Weltberühmt werden dann merken das die Grakahersteller und coden Treiber für dein OS^^ das wäre am einfachsten^^
Titel: Grafikkartenstandards?
Beitrag von: joachim_neu am 15. April 2005, 17:10
*g* stimmt, wobei man dann warscheinlich auch die grafik treiberfähig machen sollte, was einiges an ress verschleppen würde, wenn man dem grafiktreiber jedes punktesetzen als post schicken müsste, und dann den aktivieren und dann auf die antwort warten...
Titel: Grafikkartenstandards?
Beitrag von: DarkThing am 15. April 2005, 17:47
Wie macht das eigentlich Windows? Kann der Treiber da direkt auf die Ports etc. zugreifen (also per eigenen Funktionen, weil die Windowsfunktionen warscheinlich länger dauern würden)?
Titel: Grafikkartenstandards?
Beitrag von: Svenska am 15. April 2005, 17:57
Eine Anwendung nein, ein Treiber ja, sofern die Ports/Ressourcen dem Treiber zugewiesen wurden.
Oder?
Titel: Grafikkartenstandards?
Beitrag von: DarkThing am 15. April 2005, 18:04
Aha! Auf www.operating-system.org gibts das hier:


MS-DOS enthält einfachste Hardwaretreiber für den Zugriff auf Festplatten, Floppy, Dateisystem, serielle und parallele Schnittstellen, die aber seit langem nicht mehr dem wahren Funktionsumfang von angeschlossener Hardware entspricht.Als Beispiel lassen sich Farbdrucker aufzählen, die zwar per Kommandobefehl den gesendeten Text ausgeben aber nicht in der Qualität oder Farbe steuerbar sind. Hardwaretreiber lassen sich nur statisch einbinden und sind auch ohne Einsatz bis zum Neustart aktiv.

nur 16Bit Real-Mode Treiber
kennt nur direkten zugriff (bedingt durch Single Tasking System)

Mit Windows 3.x wurden erstmals einheitliche Schnittstellen für Anwendungen und Treiber bereitgestellt. Treiberformate von Windows 3.x sind .386, .drv und .dll Dateien.
Unter Windows 95 bis ME sind zum großen Teil Treiber aus Windows 3.11 weiterhin einsetzbar, allerdings verlangsamt der Zugriff auf die 16Bit Treiber durch die häufigen Wechsel zwischen Real-Mode in den Protected-Mode für 32-Bit Treiber das System.
Neu hinzu kam das Treiberformat .vxd, die vollständig im Protected-Mode laufen, auch das dynamische Laden bei Anforderung ist je nach Treiber Typ möglich. Neue Funktion für Windows ist die Plug & Play Unterstützung von Hardwaregeräten, Standard Treiber liegen dem Betriebssystem bei. Das WDM Treibermodell sorgt für die Vereinheitlichung von Treibern für Windows 98 und nachfolgende Betriebssysteme, allerdings bisher nur für Geräte am USB oder Firewire Kanal.
Windows NT ermöglicht die Einstellung von Geräte Diensten, wahlweise mit manuellen oder automatischen Start oder der gänzlichen Deaktivierung des Dienstes. Als eigenes Treiberformat ist ab Windows NT .vdd (Virtual Device Driver's) verfügbar. Die Treiber befinden sich je nach Typ vom Betriebssystemkern abgeschirmt im User-Mode, im Kernel-Mode mit direktem Hardwarezugriff oder auch als virtuelle Gerätetreiber (VDD) vor.
2005 soll Windows mit dem Codenamen "Longhorn" erhältlich sein. Auf Modulbasis soll es im Kern für alle Windows Versionen gleich sein und je nach Edition um spezifische Module erweitert werden-je nach Einsatz, Sprache und Hardware.


Und noch ein Bild über sie Systemarchitektur:
(http://www.operating-system.org/betriebssystem/bsgfx/microsoft/winxp-struktur-scr-.gif)
Titel: Grafikkartenstandards?
Beitrag von: joachim_neu am 16. April 2005, 00:14
Zitat von: Svenska
Eine Anwendung nein, ein Treiber ja, sofern die Ports/Ressourcen dem Treiber zugewiesen wurden.
Oder?


Denke mal ja, insofern WIN das mit TSS macht. Ich denk, man greift einfach zu, WIN fängt die Exception ab und schaut, ob der Port noch frei ist, und entscheidet dann.

ZUM TEXT DA:

Zitat

allerdings verlangsamt der Zugriff auf die 16Bit Treiber durch die häufigen Wechsel zwischen Real-Mode in den Protected-Mode für 32-Bit Treiber das System.

also ich glaub ja nicht, dass die da immer wechseln, wozu gibt es VM86?
Titel: Grafikkartenstandards?
Beitrag von: Another Stupid Coder am 16. April 2005, 08:50
Vorallem würde ich mir ME keines Falls zum Vorbild machen, da mir wohl niemand widersprechen wird, wenn ich sage, dass es das wahrscheinlich instabilste Betriebssystem der letzten 7 Jahre war...
Titel: Grafikkartenstandards?
Beitrag von: DarkThing am 16. April 2005, 11:14
Alle Wins die noch auf Dos basieren kann man eh vergessen. Wenn schon dann sollte man sich die reinen NT Systeme (NT, 2000, XP, 2003) ansehen.

Zum Vergleich nochmal Linux, wieder von der Seite:
(http://www.operating-system.org/betriebssystem/bsgfx/linux/linux-struktur-scr-.gif)
Titel: Grafikkartenstandards?
Beitrag von: Netmaster am 18. April 2005, 10:35
Thx für die Antworten.  :D Ich versuchs zuerst mit der Emulation (*mathe heul*)
Titel: Grafikkartenstandards?
Beitrag von: clemensoft am 30. April 2005, 16:57
Das wichtigste, die Projektion
3D -> 2D
X= X/Z
Y= Y/Z

für unsere Spezis (ich nenne die vierte Raumkoordinate mal T und meine damit nicht Time)
4D -> 3D
X= X/T
Y= Y/T
Z= Z/T
Titel: Grafikkartenstandards?
Beitrag von: Roshl am 30. April 2005, 17:04
Du bist bei 3D-Berechnung was mit dem Thread hier nix zu tun hat^^
Titel: Grafikkartenstandards?
Beitrag von: Netmaster am 23. May 2005, 23:10
Also hab nen Tutor zur EGA-Programmierung auf der Registerebene gefunden, da aber VGA auf EGA aufbaut, kann ich den Tut gebrauchen. Leider sind dort nicht alle Register einer VGA bzw. SVGA Grafikkarte beschrieben, weiß jemand, wie ich an diese Register herankomme, für jede Hilfe bin ich immer dankbar. :D
Titel: Grafikkartenstandards?
Beitrag von: Svenska am 24. May 2005, 00:02
Das PC-Hardware-Buch. :D
Gibt aber bestimmt den Standard-VGA-Registersatz irgendwo, davon geh ich mal stark aus!

Ich hab nen Vorschlag, schreibst du nen Grafiktreiber fuer ne CGA und ne Hercules-Grafikkarte? :D Also die mit 7xx*3xx und 2 Farben so in der Richtung? :D :D :D

Aber wenn du eine GUI bastelst, die bei EGA noch tauglich ist... *RESPEKT*

Svenska
Titel: Grafikkartenstandards?
Beitrag von: Netmaster am 25. May 2005, 14:24
Im PC Hradware Buch steht echt nix dazu, das ältere "das neue PC Profibuch" und das "Programmieren in Maschinensprache" enthalten fast alle CGA und EGA, sowie standard VGA-Register, ich wollte aba wissen ob es so eine Art Liste mit allen Standardports und Registern gibt, diese sollte aber nach Möglichkeit vollständig sein.
Titel: Grafikkartenstandards?
Beitrag von: Svenska am 25. May 2005, 19:03
Zitat von: Netmaster
CGA und EGA, sowie standard VGA-Register

Mit VGA ist bei 640x480x4 oder 320x240x8 Schluss.
Alles, was darueber hinausgeht, ist SVGA und da musst du dich an die VESA-Specs halten oder halt an die (nicht öffentlichen) Specs der Grafikkarte selbst. Alles was ueber VGA hinausgeht, ist - ausser halt durch's VESA - nicht spezifiziert und jeder Grafikkartenhersteller kocht sein eigenes Sueppchen.

Svenska
Titel: Grafikkartenstandards?
Beitrag von: Netmaster am 28. May 2005, 21:39
Ich weiß, dass es z.B. für 3D-Operationen keine Standards gibt, aber ich dachte bloß, dass es vielleicht doch noch irgendwelche Gemeinsamkeiten bei allen Herstellern gibt ;( Deshalb haben es die Linux-Programmierer so schwer bei der Programmierung von GraKa-Treibern. Wo könnte ich die letzte VESA-Spezifikation angucken, es war doch VESA 3.0 oder?
Titel: Grafikkartenstandards?
Beitrag von: Legend am 28. May 2005, 23:29
Na ja, man kann es auch so sehen das die Linux Entwickler es nicht wollen/packen das ATI und NVidia die Treiber *ordentlich* für sie schreiben können, aber das ist eigentlich OT und führt schnell zu Flames.
Titel: Grafikkartenstandards?
Beitrag von: Svenska am 29. May 2005, 21:14
Die letzte VESA ist afaik 3.0. Je nachdem, fuer was du schreibst, könnte auch eine 2.0er Kompatiblität okej sein, oder gar eine 1.3er. Schliesslich ist Vesa3 zwar schon etwas älter, aber nen 486er als Testmaschine wird ihn wahrscheinlich nicht haben.

@Linux/ATI/nVidia:
Die Hersteller wollen die Treiber nicht öffentlich legen, da in dem Moment grundlegende Designeigenschaften der Karten ans Licht kommen wuerden und der Konkurrenz evtl einen Vorsprung verschaffen wuerden. Die Leidtragenden sind dann die Linuxnutzer bzw. -treiberprogrammierer. Ich finde es schade, aber ohne Kommerz wird's in dieser Welt nichts, und alles, was der Kommerz entgegenwirken könnte, muss raus. Leider.