Autor Thema: VESA Grafik-Modi  (Gelesen 2740 mal)

TomCat

  • Beiträge: 32
    • Profil anzeigen
Gespeichert
« am: 19. January 2017, 15:55 »
Hallo,

wie kann ich den Grafikmodus auf FullHD (1920*1080) einstellen?
bei meinen Grafikkarten gibt es diesen Modus nicht. Nur diese 16:10 Modi z.B. 1920*1200 oder 1680*1050...

THX
TomCat


Svenska

  • Beiträge: 1 778
    • Profil anzeigen
Gespeichert
« Antwort #1 am: 20. January 2017, 02:09 »
Sämtliche VESA-Funktionalität läuft über das in der Grafikkarte verbaute Video-BIOS (VBIOS). Wenn ein Grafikmodus vom VBIOS nicht angeboten wird, dann kannst du ihn nicht mit einem VESA-Treiber benutzen. Fertig.

TomCat

  • Beiträge: 32
    • Profil anzeigen
Gespeichert
« Antwort #2 am: 20. January 2017, 09:49 »
und welche anderen Möglichkeiten gibt es den Modi einzustellen?
Ich meine, Windows z.B. kann das ja auch?


kevin

  • Administrator
  • Beiträge: 2 767
    • Profil anzeigen
Gespeichert
« Antwort #3 am: 20. January 2017, 13:46 »
Du bräuchtest einen nativen Grafiktreiber. Je nach Karte gibt es öffentliche Dokumentation dafür oder auch nicht, aber selbst wenn es welche gibt, habe ich gehört, dass diese Dokumentation dann auch zu verstehen und umzusetzen alles andere als einfach ist.
Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.

TomCat

  • Beiträge: 32
    • Profil anzeigen
Gespeichert
« Antwort #4 am: 03. February 2017, 09:16 »
Was halt sehr erstaunlich ist, dass die Grafikkartenhersteller grad den FullHD-Modus mit 1920*1080 nicht in der Liste haben.
 :-(
Ist ja so ziemlich der gängiste zur Zeit.
« Letzte Änderung: 03. February 2017, 09:22 von TomCat »

Svenska

  • Beiträge: 1 778
    • Profil anzeigen
Gespeichert
« Antwort #5 am: 04. February 2017, 00:20 »
Praktisch muss ein VESA-BIOS nur 640x480 und 1024x768 mit mindestens 256 Farben unterstützen. Sämtliche anderen Modi wurden von modernen Betriebssystemen überhaupt nur als Fallback-Lösungen benutzt, bis ein nativer Treiber vorhanden ist. Für geringe Auflösungen und Textmodi reicht ein nativer VGA/CGA-Treiber.

An sich ist VESA nur ein historisches Artefakt der 90er, damit DOS-Spiele herstellerübergreifend ein paar höhere Auflösungen benutzen konnten. Abgesehen von Systemtools und Bootloadern gibt es keinen für die Hersteller relevanten Nutzer dieser Technologie mehr (denen ist die exakte Auflösung egal) und mit UEFI kann man es nicht benutzen.

Modesetting ist ein schwieriges Problem, was selbst moderne Grafiktreiber vor Schwierigkeiten stellt. Da will man nicht den gleichen Aufwand nur für eine Schnittstelle treiben, die nahezu niemand benutzt. Daher gibt es nur eine Basisunterstützung. Außerdem ist ein VESA-Treiber unbeschleunigt und daher langsam - teilweise auch sehr langsam.

TomCat

  • Beiträge: 32
    • Profil anzeigen
Gespeichert
« Antwort #6 am: 06. February 2017, 12:12 »
Ja ok, es ging mir eher darum komplett ohne Betriebssystem zu arbeiten. Und mir reicht es da einfach Pixel direkt in den Flat-Grafikspeicher zu schreiben. Geschwindigkeit ist da, je nach Grafikkarte, von 8 Mio-Pixel bis 130 Mio-Pixel in der Sekunde. Die einzige sinnvolle Grafikbeschleunigung wäre ein Pixelblitter der mir komplette Speicherbereiche vom RAM in den Grafikspeicher verschiebt, aber so was scheints nicht zu geben, oder?

Svenska

  • Beiträge: 1 778
    • Profil anzeigen
Gespeichert
« Antwort #7 am: 08. February 2017, 01:40 »
Geschwindigkeit ist da, je nach Grafikkarte, von 8 Mio-Pixel bis 130 Mio-Pixel in der Sekunde.
Ich weiß jetzt nicht, wo du deine Zahlen her hast (Megapixel pro Sekunde klingt für mich eher nach einer 3D-Rendereinheit oder so), aber mit 8 MB/s Bandbreite kommst du bei 1024x768x32 auf 3 fps, bei höherer Auflösung entsprechend weniger. Damit macht selbst zweidimensionales Fenster-mit-Inhalt-Verschieben keinen Spaß.

Die einzige sinnvolle Grafikbeschleunigung wäre ein Pixelblitter der mir komplette Speicherbereiche vom RAM in den Grafikspeicher verschiebt, aber so was scheints nicht zu geben, oder?
Ein Blitter kopiert normalerweise nur zweidimensionale Strukturen innerhalb des Grafikspeichers und ist in jedem 2D-Beschleuniger drin. Du meinst eine DMA-Engine, die in jeder 3D-fähigen Grafikkarte drin sein sollte. Beides braucht aber native Treiber.

Wenn man den Schreibzugriff auf den VRAM hinreichend schnell bekommt, bekommt man auch mit VESA einigermaßen gebrauchbare Performance (für hinreichend leistungsfähige CPU) hin, indem man eine Kopie des Bildes im normalen RAM hält, Veränderungen dort unterbringt und nur die geänderten Passagen ins VRAM schreibt. Für Vollbildvideo mit 25 fps reicht das aber trotzdem nicht.

Außerdem löst es dein Problem mit der falschen Auflösung trotzdem nicht. Dazu brauchst du einen nativen Grafiktreiber, eine andere Grafikkarte oder - mit Glück - nur einen anderen Bildschirm.

TomCat

  • Beiträge: 32
    • Profil anzeigen
Gespeichert
« Antwort #8 am: 09. February 2017, 10:41 »
Wo ich die Zahlen her habe?
ich habe mir über viele Jahre ein Programm für embedded Systems geschrieben, das nebenbei bei der Initialisierung die Hardware auf seine Performance hin testet. Alles ASM übrigens. Und da habe ich als Maximalwert mit einer MSI_PCIe Grafikkarte eben diese 130 Millionen Pixel Schreibgeschwindigkeit gemessen. Lesen interessiert mich nicht. Macht ja wenig Sinn. Es würde aber Sinn machen, wenn man Speicherbereiche innerhalb des Grafikkarten-RAMS verschieben könnte. Z.B. Texturen von Ziffern oder kleinere Bilder in den sichtbaren Bereich blitten. 

Aber leider weiß ich nicht wie das gehen könnte...
 

Svenska

  • Beiträge: 1 778
    • Profil anzeigen
Gespeichert
« Antwort #9 am: 11. February 2017, 22:05 »
Und da habe ich als Maximalwert mit einer MSI_PCIe Grafikkarte eben diese 130 Millionen Pixel Schreibgeschwindigkeit gemessen.
Mit einem VESA-Treiber? Da bin ich jetzt aber erstaunt (bei angenommenen 32 Bit-Pixeln sind das stolze 520 MB/s).

Es würde aber Sinn machen, wenn man Speicherbereiche innerhalb des Grafikkarten-RAMS verschieben könnte. [...] Aber leider weiß ich nicht wie das gehen könnte...
Wie ich bereits schrieb, ist der Blitter ein Grundbestandteil jeder Grafikkarte mit eingebautem 2D-Beschleuniger (und im Gegensatz zur CPU bezahlt der Blitter auch keine Zinsen, um das VRAM zu lesen). Um ihn zu nutzen, brauchst du aber einen nativen Treiber.

Ein klassischer 2D-Beschleuniger ist IBMs 8514/A, der auch die Grundlage für ATIs frühe Karten (Mach und Rage) bildet. Vielleicht findet man in modernen AMD-Karten noch Kompatiblitätsreste dafür, aber das wäre trotzdem herstellerspezifisch. Und dein Problem mit dem Modesetting löst es trotzdem nicht.

TomCat

  • Beiträge: 32
    • Profil anzeigen
Gespeichert
« Antwort #10 am: 15. February 2017, 14:40 »
ja geht so schnell. mit einer 3 GHZ CPU und einer PCI-Express Karte und linearen Frame-Buffer vorausgesetzt.
Man überträgt per CPU ja immer 32-Bit. Also ein Maschinenbefehl ein 32-Bit Transport, was einem Pixel entspricht. Das gilt aber nicht für alle Grafikkarten. Habe auch schon nur 60 Mio-Pixel /Sekunde bei einer PCIe-Karte gemessen.

 

Einloggen