Da der Opensourcetreiber die Auflösung nicht verstellen kann und die Karte ohne einen Sun Monitor die Auflösung auf (für TFTs unscharfe) 1152x900 einstellt , habe ich mich mal etwas durch das PROM der Grafikkarte gewühlt.
Für die älteren Grafikkarten ist dies Dokumentiert
https://docs.oracle.com/cd/E19…9-05/6jdmq4ikq/index.html
aber für die Creator 3D gibt es unter Solaris ein Tool (ffbconfig) zum Umschalten und daher ist das bei der Karte nicht vorgesehen. Auch auf dem Web hab' ich nichts gefunden. Da die Programme für OpenBoot alle in Forth geschrieben sind und man die original Funktions- und Variablennamen anzeigen lassen kann, ist es nicht besonders schwer, den Treiber zu hacken. Eine Schande, dass es OpenBoot praktisch nicht mehr gibt.
Die einfachste Möglichkeit ist, die Routine, die die "Sense" Leitungen des 13W3 Monitorkabels abfragt, durch die gewünschte Zahl zu ersetzen.
https://en.wikipedia.org/wiki/DB13W3
http://www.sunhelp.org/faq/FrameBuffer.html
Für 1280x1024x67 (SenseID 4) erstellt man folgendes Skript mit nvedit:
Die Kommandos probe-all, install-console und banner dienen dazu, dass das Skript an der richtigen Stelle im Bootvorgang ausgeführt wird ( siehe OpenBoot 3.x Command Reference Manual, Seite 37). Zeite 2 selektiert die Creator Karte im DeviceTree und Zeile 3 ersetzt in der Funtion "set_rt_id" die Funktion "rd_monitor_id" durch den gewünschten SenseID Wert 4.
Nach dem Booten kann man im Wesentlichen das selbe mit folgenden zwei Kommandos im PROM erreichen:
400 500 400 0 0 80 40 " /SUNW,ffb@1e,0" " ffb_change_scrn_params" execute-device-method
4 " /SUNW,ffb@1e,0" " restart" execute-device-method
Die Methoden kann man nicht direkt aufrufen, da jeder Hardwarezugriff sonst in einem MMU-Fehler endet. Hat etwas gedauert, bis ich auf den oben beschriebenen Umweg gestoßen war.
Ähnlich könnte man auch Auflösungen einstellen, die die Grafikkarte aus den EDID Infos eines Sun Monitors auslesen würde. Da für mich aber SenseID 4 genügt, hab' ich die vermutlich etwas einfachere Route gewählt.