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

Disabling setting framebuffer pointer registers at all has effect, image shifts and wraps. It seems to work only for first time.

1 Like

Ah, I see. Thanks for the pointer. Might point to a locking mechanism working differently from older revisions hardware. I’ll think a bit about this part as well…

2 Likes

In the meantime I could fix and test the driver for virtualscreens. generation 4 supports upto 16384 pixels width in 32bit color, 32768 in 16bit, and 65535 in 8 bit color (acc engine untested for max width :wink: ) I just saw. I’ve pushed it to git. Would be nice if you could test and see if this is already enough to get it working on your generation gfx card.

See hrev55419: https://git.haiku-os.org/haiku/commit/?h=hrev55419&id=f2a79670aec3aba59fe51923c65de943381eb3a9

6 Likes

Thanks. I will retest when I return home.

3 Likes

Test results:

  • B_MOVE_DISPLAY still have no effect. Both x and y offsets not working.
  • Shrinking when virtual_height == 2*v_display is fixed.
  • Display shrinks vertically when virtual_width == 2*h_display, virtual_height == v_display.
1 Like

I managed to get working B_MOVE_DISPLAY on radeon_hd: VideoStreams: Media Kit-like 3D hardware acceleration kit for Haiku - #37 by X512.

8 Likes

Ok, looking good apart from register access. I will have a look for these in docs, maybe you could try them then?

Update: Looks like the registers should be the same adresses and content.
I would expect DISPLAY_A or B to be in use, but also a C exists, maybe you could add that to see if it does something:
0x7219C = Primary C base adress, PRI_SURF_C, I think that’s INTEL_DISPLAY_A_SURFACE;
0x72188 = primary stride C adress;
0x721A4 = Primary offset C adress.

The other option to test is check if in mode.cpp, function ‘set_frame_buffer_registers’ executes the top part of the ‘if’ statement, or the ‘else’ part. Looks like it should be the upper part, if that works if forced, an extra check for your chipset series should be added there.

That’s about it what I can find quickly…

1 Like

Where documentation is available?

2 Likes

Documentation for intel GPUs: Hardware Specification - PRMs | 01.org

2 Likes

@X512 yours:

specifically:

See page 724 and a few beyond. Personally I compare this stuff often to the Ivy version to see for probable changes needed.

5 Likes

I made it working! Register PRI_OFFSET (0x701a4) works with formula h_display_start + v_display_start << 16.

20 Likes

I’d say we should update that in the driver then :smile:

14 Likes

Hi, I am hoping someone can give me a little guidance. I have a laptop with Intel HD Graphics 620.
device/type 0x3
device/subtype 0
device/interface 0
device/vendor 0x8086
device/id 0x5916

I am trying to determine if this device is just not supported by our driver or if I have a bug to be reported. I have tried to determine this myself, but I’m just lost.

Thanks

Donald

1 Like

I just tried hrev55421 64 bit
I don’t know if it is related, but with webpositive, on my laptop with intel hd 4000 (card ID 0x0166), I see some progress, finally I see accelerated and smooth 1080p movies, this one here in particular with lion cubs on Rumble. I can set some videos at this resolution and they go great, (same other videos dont play but I think it depends on some codec that is missing on HAIKU. On Rumble web+ works a little better, I can change the resolution of the videos, while on Youtube I can’t)

That problem persists, but I tried to do other tests, I change the number of colors and it works, only when I change the resolution I get blackscreen.

4 Likes

your Id’ are not in there (5916)
driver.cpp\intel_extreme\graphics\drivers\kernel\add-ons\src - haiku - Haiku’s main repository (haiku-os.org)

Your chip are from the Kaby Lake family

1 Like

@modeenf

Thanks for checking. I was really hoping it would be supported. :frowning:

2 Likes

My newest build is i5-10600k (Comet Lake) which uses UHD630 built in graphics. It could be a while before it is supported! :sweat_smile:

2 Likes

So i’ve updated the driver just now in git: hrev55436. If all is right it should now work without the patch @X512. If not, please let me know what’s needed extra and/or different… Thanks!

9 Likes

For the record, I created a ticket, but it has not much info yet:
https://dev.haiku-os.org/ticket/17264

Hope this will help getting it solved at some point :slight_smile:

3 Likes

I also have problem that app_server start freeze and load CPU after running accelerant test. Maybe retrace semaphore problem.

Accelerant cloning unfortunately not working. It returns error when attempting to clone. Cloning accelerant should perform better and cause less conflicts when app_server is running.

2 Likes