Michael Weirauch schrieb:
2009/4/29 holmqvist.fredrik@xxxxxxxxxxxx <holmqvist.fredrik@xxxxxxxxxxxx>:Fwiw, I'm currently trying to improve vesa mode-handling. I have it using edi-info if possible already, adding modes that it reports ok or those we have listed that are within the monitors range. The other problem is that these are then filtered by the vesa bios, so some modes (like my native resolution) isn't available. That is what I am looking at next.Oh, same here ;) My Radeon 3650 only reports standard vesa modes. The native resolution is only reported in the detailed_monitor_info from the edid1_info struct. When adding these edid modes to the list of available modes in the bios_ia32/video.cpp, the resolution shows up in the boot loader. Unfortunately the system reboots when selecting the added mode. Perhaps my approach isn't the way to do it right. Mind sharing your patch with me?
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.
Best regards, -Stephan