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

hi @rudolfc I have in my hands a cheap acer aspire one cloudbook 14, with a celeron n3050, everything seems to work, but the video card is seen as vesa, but it should be compatible with intel_extreme, on linux start the i915 drivers, the reason she is seen as vesa is because her id is not listed in the intel_extreme?

Hi,

This is Cherryview Braswell (Gen8LP).
To my knowledge this generation LP chips is not yet supported. I have one here too (22b0 in microsoft surface 3), which also isnt supported yet.

Simply adding the ID isn’t going to solve that I fear, but it would be nice indeed if it would be supported! :smile:

3 Likes

my hopes dashed quickly :joy:

I was happily surprised that my newer laptop booted with Intel graphics, 3000x2000 pixels and vertical retrace interrupt working (8086:5917). Great work!

10 Likes

@rudolfc, @korli, @PulkoMandy

Any ideas how to implement submitting command buffers to 3D GFX engine on Intel GPUs? It is possible to implement it with existing intel_extreme code? Implementing submitting command buffers would allow to run Mesa ANV Vulkan driver.

10 Likes

If I remember correctly there is a hardware ring buffer to submit various commands, and there is already some setup done for it in the existing driver.

There is a primary_ring_buffer structure in the accelerant shared_info and the accelerant tries to use it for overlays and some other things (there is some code for 2D acceleration). The QueueCommands class in the accelerant can be reused to submit other commands including the 3D acceleration ones.

I never looked into this in great details, I don’t know if it is already working on all devices since both overlay and 2D acceleration are currently disabled in the driver.

I think the hardware also supports multiple ring buffers, so if the design does not go through the accelerant, it should be possible to use another ring_buffer for the 3D part, feeding it from somewhere else.

2 Likes

The QueueCommands class isn’t working on all devices, no. It’s disabled on anything above Broadwell because all it does is stall. I seem to recall looking at the Linux driver and discovered their ring buffer management code was exponentially more complicated than anything in the Haiku driver, and that trying to write an alternative implementation was probably not worth the time.

For Radeon SI loading firmwares is needed to make GFX ring functional and not stall on any command. Maybe something similar is needed for Intel GPUs?

Linux Intel GPU kernel driver is most Linuxish driver from all GPU drivers and it basically originated DRM architecture. It is also the only driver that use GEM subsystem for command buffer execution. Running it on Haiku will need something like Wine but for kernel that is very ugly.

Good day. I saw in the system log that my built-in card in the laptop sees my connected monitor via HDMI, maximum resolution and model, everything is correct. The resolution on the laptop screen and on the external monitor is the same, 1920 x 1080. Is it planned to add the ability to mirror the image on HDMI, or the ability to select an image on the laptop screen or HDMI? Is further work planned on this video driver?

1 Like

There are no “plans” in Haiku. It will happen when someone decides to implement it. On my own machine I have tried to improve the driver but did not yet manage to get the second display initialized. We have some code missing, which means part of the display setup has to be done by the BIOS, and then all we can do is change resolutions. But we are not yet able to set up a display from scratch. In theory all the code should be there, but something is not working…,

1 Like