Autor Thema: VESA Bios Extensions  (Gelesen 11626 mal)

KtmnjjpfjsFvzG

  • Beiträge: 111
    • Profil anzeigen
Gespeichert
« am: 02. February 2013, 15:26 »
Ich hab ehrlich gesagt keine Ahnung davon, aber mich interessieren folgende Dinge:

- Was ist, wenn man statt einem BIOS UEFI hat? Funktioniert das dann auch noch?
- Was ist mit anderen Auflösungen, als denen, die in der Liste stehen? Wie ist es überhaupt möglich, z.B. 1920x1080 Pixel darzustellen?
- Wie kann man, falls vorhanden, eine Grafikkarte dazu ausnutzen, die Pixel zu berechnen?

Martin Erhardt

  • Beiträge: 165
    • Profil anzeigen
Gespeichert
« Antwort #1 am: 02. February 2013, 15:53 »
- Was ist mit anderen Auflösungen, als denen, die in der Liste stehen? Wie ist es überhaupt möglich, z.B. 1920x1080 Pixel darzustellen?
Mit VESA alles außer FULL HD.
Vllt schreib ich mal en rudimentären Radeon oder Geforce Treiber der en FULL HD modus einstellt aber davon bin ich momentan ziemlich weit weg. Dafür müsste man mit Reverse Engineering die Specs aus den fglrx und nouveau Treibern rauslesen oder debuggen. Rauslesen eher weniger weil die meiste moderne HW von Linux nicht unterstützt wird und sie ziemlich unlesbar sind.

Meine ROADMAP

VMM Heap;
x64;
DMA, PCI;
AHCI;
FAT32;
SMP, SSE;
AHCI oder VESA 2.0
- Wie kann man, falls vorhanden, eine Grafikkarte dazu ausnutzen, die Pixel zu berechnen?
Normalerweise sendet die Hardware einfach nur den Framebuffer an das Display über DVI oder HDMI. Hardware beschleunigung dass du die GPU dies und das ausrechnen lässt ist schwer
« Letzte Änderung: 02. February 2013, 16:02 von Martin Erhardt »

KtmnjjpfjsFvzG

  • Beiträge: 111
    • Profil anzeigen
Gespeichert
« Antwort #2 am: 02. February 2013, 15:57 »
Hmm OK, dann muss also erstmal die CPU die Pixel berechnen...

Wenn man so einen Treiber hat, ist es denn dann egal, welche Geforce man hat? Gibt da doch hunderte verschiedene^^

Martin Erhardt

  • Beiträge: 165
    • Profil anzeigen
Gespeichert
« Antwort #3 am: 02. February 2013, 16:00 »
Wenn man so einen Treiber hat, ist es denn dann egal, welche Geforce man hat? Gibt da doch hunderte verschiedene^^
Wenn du bloß VESA nutzt ja. Wenn du Spezifischeres schreibst z.b FULL HD Auflösungen setzt dann is das nicht mehr egal.
« Letzte Änderung: 02. February 2013, 16:02 von Martin Erhardt »

KtmnjjpfjsFvzG

  • Beiträge: 111
    • Profil anzeigen
Gespeichert
« Antwort #4 am: 02. February 2013, 16:04 »
Ja, und VESA kann ja kein Full HD, also würde ich dann nicht VESA nutzen und bräuchte für jede Grafikkarte einen eigenen Treiber, oder?

Jidder

  • Administrator
  • Beiträge: 1 625
    • Profil anzeigen
Gespeichert
« Antwort #5 am: 02. February 2013, 18:13 »
Wo habt ihr das her, dass VESA 1920x1080 nicht unterstützt?
Dieser Text wird unter jedem Beitrag angezeigt.

KtmnjjpfjsFvzG

  • Beiträge: 111
    • Profil anzeigen
Gespeichert
« Antwort #6 am: 02. February 2013, 18:16 »
Von hier: http://www.lowlevel.eu/wiki/VESA_BIOS_Extensions

Allerdings lese ich hier gerade
Zitat
Mit VBE 2.0 hat man sich allerdings dafür entschieden, dass die Grafikkartenherrsteller einfach nur eine Funktion bereitstellen, die alle von der Grafikkarte unterstützten Modi auflistet. Den Zeiger auf diese Liste erhält man mit dem VBE Info Block (4F00h). Diese Liste ist eigentlich nur ein WORD-Array, also eine Hintereinaderreihung von 16-Bit-Nummern. Diese repräsentieren die von der Grafikkarte unterstützten Grafikmodi. Die Liste wird terminiert durch den Eintrag 0xFFFF. Es wird empfohlen, sich nicht auf die o. g. Standardmodi zu verlassen, sondern durch Abfragen des Modeinfoblocks die Auflösung und anderen Eigenschaften der Modi aus der Modeliste herauszufinden.
Bedeutet das also, dass auch 1920x1080 geht?

Jidder

  • Administrator
  • Beiträge: 1 625
    • Profil anzeigen
Gespeichert
« Antwort #7 am: 02. February 2013, 18:26 »
Wenn der Grafikkartenhersteller das so will, dann geht das.
Dieser Text wird unter jedem Beitrag angezeigt.

KtmnjjpfjsFvzG

  • Beiträge: 111
    • Profil anzeigen
Gespeichert
« Antwort #8 am: 02. February 2013, 18:38 »
Gibt es irgendwo Infos darüber, wie ich die verfügbaren Modi auslese?

Jidder

  • Administrator
  • Beiträge: 1 625
    • Profil anzeigen
Gespeichert
« Antwort #9 am: 02. February 2013, 18:40 »
Du hast in deinem vorletzten Post die Beschreibung wie das geht zitiert.
Dieser Text wird unter jedem Beitrag angezeigt.

KtmnjjpfjsFvzG

  • Beiträge: 111
    • Profil anzeigen
Gespeichert
« Antwort #10 am: 02. February 2013, 18:49 »
Ehrlich gesagt bin ich etwas zu doof dafür, das umzusetzen...

WORD* vesa=(WORD*) 0x????;

int i = 0;

for(; vesa[i] != 0xffff; i++){
echo("%x",vesa[i]);
}
So in etwa? Was muss ich bei "????" schreiben ^^

Jidder

  • Administrator
  • Beiträge: 1 625
    • Profil anzeigen
Gespeichert
« Antwort #11 am: 02. February 2013, 19:05 »
Die VESA BIOS Funktionen sind Real Mode-Funktionen. Die einfachste Möglichkeit diese Funktionen aus dem Protected Mode aufzurufen ist der Virtual 8086 Mode. Im Artikel sind Tutorials verlinkt. Das sollte dich die nächsten paar Tage gut beschäftigen.
« Letzte Änderung: 02. February 2013, 19:07 von Jidder »
Dieser Text wird unter jedem Beitrag angezeigt.

KtmnjjpfjsFvzG

  • Beiträge: 111
    • Profil anzeigen
Gespeichert
« Antwort #12 am: 02. February 2013, 19:33 »
Brauche ich dazu zwingend multitasking-unterstützung?

Jidder

  • Administrator
  • Beiträge: 1 625
    • Profil anzeigen
Gespeichert
« Antwort #13 am: 02. February 2013, 19:50 »
Nein, Multitasking brauchst du nicht. Du musst das nicht unbedingt als Task implementieren, sondern du kannst im Kernel einfach kurz in den VM86 wechseln und hoffen, dass der zeitnah wieder zurückkehrt. Wenn du irgendwann Multitasking implementierst, musst du allerdings schon irgendwie Rücksicht auf den VM86 nehmen oder du nutzt ihn nur bevor du Multitasking aktiviert hast.
Dieser Text wird unter jedem Beitrag angezeigt.

KtmnjjpfjsFvzG

  • Beiträge: 111
    • Profil anzeigen
Gespeichert
« Antwort #14 am: 02. February 2013, 19:57 »
Also, wenn ich permanent im Grafikmodus sein möchte, muss ich nicht permanent im VM86 sein?

Martin Erhardt

  • Beiträge: 165
    • Profil anzeigen
Gespeichert
« Antwort #15 am: 02. February 2013, 20:17 »
Also, wenn ich permanent im Grafikmodus sein möchte, muss ich nicht permanent im VM86 sein?
Nein das brauchst du nur zur Iniitialisierung des Linear Frame Buffer auf den kannst du auch später zugreifen.

Martin Erhardt

  • Beiträge: 165
    • Profil anzeigen
Gespeichert
« Antwort #16 am: 02. February 2013, 20:18 »
Wobei man den LBF doch auch von GRUB 2 laden lassen kann? Wo steht wie das geht?

stultus

  • Beiträge: 486
    • Profil anzeigen
Gespeichert
« Antwort #17 am: 02. February 2013, 21:14 »
Irgendwo in den Dokumentationen. Ist aber nicht anzuraten:
- GRUB-spezifisch, Erweiterung zu Multiboot
- Auflösung wechseln im Betrieb nicht möglich
- Autoerkennung / besten Modi afaik schwer implementierbar (im Falle von GRUB2 wohl nen kleines Script was dadrin läuft)

Grundsätzlich, kümmer dich erst um die Grundlagen - Grafik ist nen Kapitel für sich, da will man sich nicht parallel mit irgendwas anderem rumplagen.
MSN: planetconquestdm@hotmail.de
ICQ: 190-084-185

... Wayne?

KtmnjjpfjsFvzG

  • Beiträge: 111
    • Profil anzeigen
Gespeichert
« Antwort #18 am: 02. February 2013, 21:20 »
Also mach ich es selbst im System, dann ist man nachher nicht auf GRUB angewiesen, sondern kann auch einen anderen Bootloader nutzen...

Es würde also so ablaufen:

1. in VM86 schalten
2. Liste der möglichen Auflösungen auslesen
3. für eine Auflösung entscheiden
4. irgendwie die entsprechende Speicheradresse sichern
5. VM86 wieder ausschalten
6. in die Speicheradresse aus Punkt 4 Pixel reinschreiben

oder?

Martin Erhardt

  • Beiträge: 165
    • Profil anzeigen
Gespeichert
« Antwort #19 am: 02. February 2013, 21:22 »
Grundsätzlich, kümmer dich erst um die Grundlagen - Grafik ist nen Kapitel für sich, da will man sich nicht parallel mit irgendwas anderem rumplagen.
Hast du meene Roadmap gesehen?;)

@KtmnjjpfjsFvzG bist du so unhöflich oder siehst du meine PMs vllt gar nicht^^?
http://forum.lowlevel.eu/index.php?action=pm
« Letzte Änderung: 02. February 2013, 21:44 von Martin Erhardt »

 

Einloggen