Opened 5 years ago
Last modified 5 years ago
#15410 new bug
VESA drvier picks up other drivers mode
Reported by: | nephele | Owned by: | nobody |
---|---|---|---|
Priority: | normal | Milestone: | Unscheduled |
Component: | Drivers/Graphics/VESA | Version: | R1/Development |
Keywords: | Cc: | ||
Blocked By: | Blocking: | ||
Platform: | All |
Description
Example: preferences/Screen for nvidia is set to 1600x1200x32 which works fine for the nvidia driver, but specifically does not work for vesa (why not i don't know though, seperate bug?)
Anyhow, booting with this mode will result in input not supported for the majority of the boot while the vesa driver tries to use that mode (although booted in vesa only 1600x1200x32 isnt even listed, only x16 is)
With 1280x1040 both are fine,
this results in the wierd case that A) if i switch my monitor to one with less hertz than VESA will use too much hertz and can't be told in the bootloader to stop it (maybe edid problem too?) B) Booting in failsafe graphics is no longer possible on the same monitor, as only nvidia will give actuall rendering
not sure how to rectify this or what a proper course of action should be (especially since EDID seams to be lying about some modes anyhow.)
syslog attached.
Attachments (1)
Change History (10)
by , 5 years ago
Attachment: | nvidia-log.txt added |
---|
comment:1 by , 5 years ago
Component: | - General → Drivers/Graphics/VESA |
---|
comment:2 by , 5 years ago
You can always force a specific videomode for the VESA driver from the bootmenu at least, so it should not prevent getting back your display in any case.
That VESA tries to use the same mode as the other driver if available is a feature, we do our best to provide a native resolution bootscreen. Why would we not do that?
As usual with VESA, we can't do much but blindly trust the VESA BIOS in what it tells it supports. If it says it has a 1600x1200 mode, we have no way to know if that's usable or not, so we will just try it. We do some filtering by asking the display itself for its EDID info (which VESA allows us to access), but still, a few things can go wrong:
- The VESA BIOS pretends to support a 1600x1200 mode, but it is in fact non-working or the timings are not the one it tells us it would use, and it ends up being out of range of monitor capabilities,
- The monitor is not giving correct EDID info, so we think the mode should work according to what it says, but it in fact doesn't handle it.
There is not much we can do with VESA, it just doesn't give us enough control on the video timings. We can add quirks for specific VESA BIOS implementations or known bogus EDID info, but it is really a case by case thing.
comment:3 by , 5 years ago
we do our best to provide a native resolution bootscreen. Why would we not do that?
I don't have a problem with this, but to me it would make sense to boot completely with the proper driver in that case.
To me the situation that the settings for the nvidia driver switch vesas behaviour is still wierd though, i don't really have a way to specify that this mode for whatever reason does work for nvidia but not for vesa.
comment:4 by , 5 years ago
We can't load drivers before we have mounted the disk they are stored in. So the early steps can't be in anything else than vesa. As I mentionned, if the mode is advertised but in fact doesn't work, we should blacklist it manually, we could do this by identifying the particular monitor or videocard bios this happens with. It is not something I expect users to manually change to get a splashscreen. And I don't think forcing 800x600 for the bootscreen, just in case the higher modes don't work, is the right thing to do here.
comment:5 by , 5 years ago
Alright, what information would you need to blacklist wrong modes for vesa? the EDID info seams to advertise severall modes (including ridicilously high ones), and haiku offers even more that aren't offered at all (with nvidia, vesa offers less modes than what edid offers?)
comment:6 by , 5 years ago
You can always force a specific videomode for the VESA driver from the bootmenu at least, so it should not prevent getting back your display in any case.
Where is that? I would expect it to be next to the failsafe graphics mode option
Also, i would expect failsafe graphics to use the same video mode the bootloader already uses, since that is indeed rendering
comment:7 by , 5 years ago
Which bootloader do you mean? Our bootman and the boot menu both use text mode, which is of course not suitable for the next steps.
The video mode selection is right at the top of the boot menu ("select failsafe video mode")
comment:8 by , 5 years ago
I checked your syslog and the PCI ID for your video card isn't even handled by the nvidia driver (as you can check here: https://git.haiku-os.org/haiku/tree/src/add-ons/kernel/drivers/graphics/nvidia/driver.c#n94 )
2858 KERN: PCI: vendor 10de: NVIDIA Corporation 2859 KERN: PCI: device 0de1: GF108 [GeForce GT 430]
0de1 is not handled by the nvidia driver. You can also check that using listimage | grep nvidia
and confirm that the driver is not listed.
As I mentionned to you over IRC when you first mentionned this problem, the nvidia driver is only for very old devices. Yours is much too recent for it.
So, you are using VESA all the time. The resolution list you see at the start of the syslog is what the VESA BIOS reports as supported. We already do some sanity checking on this list, removing obviously broken modes, and this leads to the list you see in screen preferences. When you set a mode there, it is used all the time, both bootsplash and desktop.
So now it seems very strange that this resolution works for the desktop and not for the splash screen, since it is the exact same one set by the same driver.
comment:9 by , 5 years ago
I am not using the external GPU at all, that was only there for a test. The internal card is reported as "Nvidia GeForce 6100 nForce" which if i read the nvidia driver correctly is supported by that driver, booting in failsafe mode gives me drastically different list of modes i can use, so i assume that it is not the same driver (additionally havign 1600x1200x32 selected /never/ lets me boot to the desktop with failsafe graphics on)
syslog