Improving the Intel Extreme Driver (Was: Graphics on Dell laptop in Vesa mode only)

ah, ok. if you open a terminal and type ls /dev/graphics, what entries do you see?

1 Like

I see this
ls /dev/graphics
intel_extreme_000200 vesa

1 Like

Well, it that case Haiku should try to boot with the Intel I would think. Your card is generation 7. Could you provide a syslog? best probably via a ticket on trac? Thanks!

1 Like

I add a ticket with number 17001.

Syslog is added in the ticket.

Thank you

Mentioning it in case it’s relevant here: there is a second driver involved for intel graphics support with a separate list of PCI IDs (for some other part of the intel chipset that’s exposed separately from the video card for some reason). That’s the agp_gart driver located in src/add-ons/kernel/busses/agp_gart/intel_gart.cpp

For the more recent generations it’s quite likely that this driver was not updated with all the IDs yet.

2 Likes

ah thank you, I did not realize that. From the syslog however it looks like there’s problems before any mode is even programmed (edid detection fails). I’ll keep this in mind though, so I recognize it sooner when I encounter trouble on this :slight_smile:

2 Likes

Hi, just a small status update.
I just committed hrev55168 in which displayport and DDI (later gen7+ devices) connected monitors are accepted, even though EDID/DDC still does not work for them. Screens connected that way should be showing the desktop now if Haiku’s screenprefs is set in the same mode as the bootmode.
For some screens you’ll probably have dualhead clone mode like display if you connect both an analog and digital screen, but that is actually a sign setmode for that digital screen is not yet fully working. If it did, the display would have been -off-.

So next up:

  • I’ll try to locate this problem first and solve it so that more users will have a screen on both monitors.
  • Then I’ll try to setup ‘setmode’ for displayport connected monitors (that’s still missing in the code)
  • Later on the EDID/DDC thing needs to be fixed as well of course, as now Haiku does not know for the DDI and displayport connected screens what the native mode is…

I’ve updated some tickets with more testing requests as I am always interested in new results. At least I have tested on different systems with single and dual screens, and I have seen very promising results :slight_smile:

That’s it for now…

19 Likes

In my dream today I had a working dual-head Haiku setup with extended desktop.
Maybe I should spend less time with Haiku…

5 Likes

Any chance for getting support of 8086:22B0?

1 Like

Hi again,

Sorry for the delay, I intend to respond to everyone. I promiss I’ll do that asap. Anyhow, a quick update:

  • I’m currently working on a change that should get two screens up on most systems, though on laptops that’s always a bit tricky as that’s kind of special (internal panel). I hope to commit this in a few days and if it’s working OK I hope someone can also apply it to the beta3.
  • While working on this (it’s not assigning pipes if that means switching it as switching cannot be done yet I found this week) I found that DP connected screens ‘misbehave’ in my plans, so:
  • I’m now also sitting in a detour trying to get more knowledge about DP connected screens. That resulted in a working DP screen on Ivy, where it’s always at native resolution and all modes are just scaled to it, and that seems to work very nicely. No refreshrate changes then of course…
  • this DP thing is tricky to do as I don’t know yet howto autodetect enough stuff to know what to do on each config outthere. So I have to see how far I can come with this. On the bright side I also can program the DP screen’s link speed correctly upto a point where I get a message from the monitor that the current mode isn’t supported (please choose another one). This more or less indicates to me that it should be possible to also use other link speeds for other modes instead of just scaling to native mode: though the latter is exactly what the BIOS by default does.

All in all, it’s a lot of work, and there are a lot of nasty bumps and turns in the road. Like also for instance: looking at later generations specs I see less and less clear info that I can grasp, and also a lot of differences between generations.

Which in turn means that I would not choose to add more ID’s to the driver currently when we talk about generations later than gen7 devices.
I think I’m lucky to have upto/including gen 7 (Ivy Bridge) working rather nicely thus far…

OK, that’s it for now!

16 Likes

Hi, so this is a generation 8 device from the wiki page. It’s not in the driver, and for now I would leave it that way (I did not specifically look at this generation yet, nor do I have the option to test on in yet).

Of course, you can for a test add the ID locally and see what happens for yourself. Don’t be disappointed if it doesn’t work though :wink:
One thing that is different is that the display port interface was replaced by digital display interface (DDI). There is some code in place for that, but as fas as I am aware of this hasn’t been tested yet.

There is a ticket with a chipset which also has DDI and over there connections on this port are still down at least.

So all in all: sure, there’s a chance, at least it’s the ‘next-up’ generation in line for testing and improving I’d say, but not yet today…

Hello kim1963! (sorry for the very late reply…)

You have a generation 9 system (Coffee Lake). I guess it will be a while before it can be supported I’m afraid…
Of course if I stumble upon such a system to test on, I will surely have a look… :wink:

OK: UPDATE for everyone:

(I cannot post a fourth reply, so I -have- to do it this way)

Hi everyone,

You’re encouraged to try hrev55189 (or later) to see what it does for your intel_extreme video!
I’ve changed the driver to follow BIOS setup for the pipes useage instead of trying to swith them actively.

Switching cannot be done (reliably) so this for now is the only way.

The result is:

  • you should have the same beaviour as before on a single screen, though if you did not have any picture you might be lucky now :wink:
  • if you have two screens connected, both should display the desktop now, provided you have set a compatible mode that both screens understand.
  • tested on G45 (Gen4) and IvyBridge (gen7) with all possible screen types single and combined, and I always have two (cloned) desktops (with two screens connected that is :slight_smile: )
  • Note though: if you have set your desktop resolution to the same resolution as the icons screen, you should also have a nice desktop on Display Port connected screens: but setting different resolutions is not going to work there yet. (I’m on it :wink: )

Please report back the results!
Also: I think it should be safe to add this modification to beta3. Please @PulkoMandy see if you have your laptop still in working order, and please include the update there if you are satisfied with the results…

Thanks!

8 Likes

OK

screenshot880

2 Likes

Hi,
Since apparantly no nightlies are built at this moment, I decided to upload binary versions of the driver here.
Get it at:
http://rudolfs-place.nl/Haiku/Downloads/Intel_extreme_drv_v5_hrev55189.zip

Thanks!

3 Likes

Hello rudolph,
here nothing new to see…
no dual mirror screen so far, still everything the same.

EDIT: I get mirror screen with 800 x 600

3 Likes

Hello,

I’ve got a new version to test with a few more general fixes: this might turn some more screens on at some systems outthere…

http://rudolfs-place.nl/Haiku/Downloads/Intel_extreme_drv_v6_hrev55200.zip

BTW: If someone encounters regressions, be sure to let me know about it! :slight_smile:

5 Likes

Hello again,
If you have a displayport connected monitor on i.e. G45, Sandy, or IvyBridge, you are encouraged to try hrev55203 to see if you can now set modes with that (and have a desktop). The mode is still as the BIOS pre-programmes it, but the driver now scales other resolutions to the resolution currently ‘on display’ on such a monitor.

I’ve tested succesfully on G45 and IvyBridge, if they are the only monitor connected. I’m also close to making it work that way when a second screen (other type) is there, but that requires a small structural change (again) in the driver. (Pipe and Transcoder are -not- the same in this case, but the driver assumes they -are- the same still).

I guess on Haiku first boot, when no EDID is found (which is the case still on displayport), Haiku uses the higest reported available mode from the cardBIOS. Which on my G45 is 1280x1024, and on Ivy 1920x1080: so these modes are currently also active with the driver in these monitors, and other resolutions are scaled to that.

So you can have a bit of influence on the behaviour by selecting a mode manually in the bootoptions (-not- failsafe videomode of course :wink: )

If you test, be sure to let know what happens (and I’d like a syslog from the attempt to learn from :slight_smile: )

12 Likes

I am so pleased you are doing this. Not being able to use a second (and larger) screen is one of the two things holding me back from making Haiku my default operating system.
The other thing is the state of available browsers, and we are led to expect improvements there too.

So keep it up! There are a lot of grateful people watching your progress.

9 Likes

thank you @Sebrof :slight_smile:
Update: The driver in git is updated again: it now supports dualhead clone mode on Sandy and Ivy bridge for displayport connected screens, including modeswitching (by scaling to bios preset mode).
My systems are now almost 100% OK, apart from the FDI lanes programming item (on analog screens)

On G45 (generation 4) I am currently also testing with displayport because I cannot set modes there yet if it’s alongside a second screen (only bootresolution works there), but from the looks of it that’s going to change as well. The setup differs somewhat from newer generations (no PCH for one)

I’m trying to program the link to the monitor which in principle already succeeded on Ivy (But it’s not included in the driver yet). This means more register definitions will be added to the driver as the data/ link M and N sits in another place in the generation 4 cards…

UPDATE:

YES! That works. I just saw a displayport link switch in refreshrate and resolution… So generation 4 will not scale to preset mode as Sandy and Ivy currently do in the driver, but it will -fully- set the mode.
Of course I just -got- to try this sequence on later cards as well… :slight_smile:

6 Likes

Hi @rudolfc I am getting a black screen with my Ivy Bridge on the latest nightly (55207). Device ID is 0166.
I have no other screens connected to the laptop.
I am gessing all your changes are not merged yet?

1 Like