Michael Weirauch schrieb:
2009/4/29 Stephan Aßmus <superstippi@xxxxxx>:Guys, you are on the wrong track here. As far as I understand, the VESA BIOS offers a "mode list", this allows our VESA driver to pick one of these modes by it's "index in the list". The VESA BIOS of the graphics card then knows how to program and setup the graphics chip to realize this request. As may be clear now, it is something completely different for our VESA driver to simply select a mode by list id, versus actually programming the graphics chip to realize a specific mode. From what I know, it's in theory possible to "patch" the VESA BIOS and replace a programmed mode with another mode. This requires knowing the location in the BIOS to patch. However it's impossible for the driver to actually setup a mode that is not in the list, because switching the mode means to select an existing index, _not_ programming the chip. A VESA driver doesn't know how to do this.Oh, the joys if ignorance on my side ;) So it would be up to the haiku_loader to detect other supported modes by querying the edid info (as we probably have been doing right) and then add or replace the additional mode in the VESA BIOS so it can be picked up by the vesa driver for being set?
I am not sure what would be the best place for patching a VESA BIOS mode list. If I am not mistaken, this requires knowledge of the specific graphics board. So maybe it would be an idea to add "plugins" to the VESA driver which know how to patch specific boards. I know before the Intel graphics driver documentation was released, it was a common method on Linux to patch for example the i815 VESA BIOS, because the i815 Linux X driver didn't know how to switch resolutions (unlike Axels Haiku driver at the time!). Something similar could be added in the VESA driver perhaps. But I have no idea if it's even possible for the VESA driver to detect what chip it is talking to. Maybe Axel can chime in with more info... :-)
Best regards, -Stephan