Hi,
ZitatOriginally posted by herm
Das hast Du glaub ich falsch verstanden. DOV0STA ist ein Statusregister, und damit read-only
verstanden schon aber etwas unguenstig ausgedrueckt:)
Ist schon klar dass DOV0STA ein Statusregister ist. Ich wollte sagen, dass ich nicht den
Field-Status meine, der unter anderem in DOV0STA angezeigt wird.
Inzwischen habe ich aber eh rausgefunden wie ich an den 'richtigen' Field Status komme (siehe Post oben).
ZitatHier mal die wichtigen Stellen in i810_video.c. Hier wird in der Funktion I810PutImage darauf gewartet, daß der Buffer der gefüllt werden soll nicht mehr angezeigt wird. Hier wird bis jetzt nur Bit 20 von DOV0STA ausgewertet.
ja richtig, genau in I810DisplayVideo() das von I810PutImage() gerufen wird setzt ja mein obiger proof-of-concept-Patch an:
overlay->OV0CMD |= 0x00000020; /* hier aktiviere ich den field mode => even Field */
OVERLAY_UPDATE(pI810->OverlayPhysical); /* Uebergabe an Hardware */
while (INREG(DOV0STA) & 0x80000000); /* warten bis die Daten gelesen wurden */
overlay->OV0CMD |= 0x02; /* aktivieren des odd Field */
OVERLAY_UPDATE(pI810->OverlayPhysical); /* Uebergabe an Hardware */
das ist natuerlich nur ein simpler Test, da der Busy-Wait mindestens in einen ioctl() umgesetzt werden muss. Aber so bekommst du bereits even + odd Fields auf den Schirm. Das klappt sogar mit meiner PIII 733Mhz- Testkiste ohne Ruckeln. Es fehlt in diesem simplen Test aber noch die Synchronisation mit dem aktuellen CRT-Field.
Am besten erfolgt der Field-Switch aus dem DRM-Interrupt heraus. Dann muss sich der Xserver gar nicht mehr damit aufhalten.
ZitatIch habe das Datasheet vom i830. War im Netz nur indirekt zu finden. Soll ichs zumailen (2Mb)?
WOW!. Aber immer gerne! Vielen Dank schon mal.
ZitatDer i830 ist ähnlich zum i810, ist aber um einige Features erweitert worden. Er hat glaub ich mehrere Overlaybereiche und kann Textured Video. Das macht das ganze aber noch deutlich unübersichtlicher. Wir sollten zuerst den i810 zum Laufen bringen
ja klar. Aber sicherheitshalber hab' ich schon mal eine S100 bestellt. Fuer den Fall, dass wir mit dem i810 zu schnell fertig werden:)
ZitatIch habe übrigens zum Testen eine Scovery XS (i815), Compaq Deskpro EN (i815) ein No-Name i810-Board und eine S100 (i830). Wär schon Klasse wenn man damit eine 100%-Scart-Ausgabe hinkriegen würde.
Ich hab' einen NEC Powermate - Intel PIII 733 MHz mit i810 und bald eine S100 zum Test.
ZitatZu welcher Debian gehört der Xserver-i810 Version 2.3.2? Ich habe Sid drauf mit Version 1.7.2.
ich hab Debian 5.0 (lenny) und das zeigt:
kann auch sein, dass ich das mal mit
geholt habe. Die neu kompilierten Binaries kopiere ich sowieso immer an den Packages vorbei:)
ZitatWie funktioniert das Ganze mit Interrupt? Der XServer merkt sich den zu kopierenden Speicherbereich, zieht einen Interrupt auf, der im DRM einläuft und dort wird dann der Buffer geflippt? Hört sich nach Arbeit an.
ich habe bereits einen 50Hz VSYNC Interrupt fuer den i810 implementiert. Siehe neuesten Patch von heute: vga-sync-fields-0.0.8.tgz. Irgendwas wurde wohl auch im 'i810_dma.c' schon vorbereitet, siehe Funktion i810_ov0_flip().
- sparkie