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)

nvidia-log.txt (417.3 KB ) - added by nephele 5 years ago.
syslog

Download all attachments as: .zip

Change History (10)

by nephele, 5 years ago

Attachment: nvidia-log.txt added

syslog

comment:1 by diver, 5 years ago

Component: - GeneralDrivers/Graphics/VESA

comment:2 by pulkomandy, 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 nephele, 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 pulkomandy, 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 nephele, 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 nephele, 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

Last edited 5 years ago by nephele (previous) (diff)

comment:7 by pulkomandy, 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 pulkomandy, 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 nephele, 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)

from the same syslog:

492	KERN: PCI:   vendor 10de: NVIDIA Corporation
493	KERN: PCI:   device 03d1: C61 [GeForce 6100 nForce 405]
Last edited 5 years ago by nephele (previous) (diff)
Note: See TracTickets for help on using tickets.