Jump to content

Graphics Stuttering HD4600


NBABASKETBALL
 Share

5 posts in this topic

Recommended Posts

Yeah, so I am running macOS Big Sur on an Optiplex 7020 sff (i5-4690T) using the onboard graphics (HD4600). I followed the Dortania post install guide for iGPU patchingbut when I boot for the first 15-25 seconds the mouse and keyboard are extremely laggy. After that time period everything is normal. I am using a DP to HDMI cable and I have no dGPU installed. Any help is appreciated. (using OpenCore 0.6.8)

 

I uploaded my EFI and a screenshot from system report (in case something isn't showing up correctly and I missed it) 

If an IOREG or a different file would help identifying this issue I will be happy to upload it.

 

1.png

EFI.zip

Link to comment
Share on other sites

3 hours ago, Hervé said:

You inject the following properties in your OC config:

HD4600_injection.jpg

 

  • i5-4690T CPU is fitted with HD4600 iGPU with device id 0x0412; as such, your device-id injection is unnecessary but does no harm of course.
  • fbmem and stolenmem property injections are not usually required for HD4600 graphics and I think you can remove them especially as your injections effectively decrease fbmem from default 19MB to 9MB and stolenmem from default 32MB to 19MB. You don't think you want that and these patches usually apply to subsequent iGPU generations starting at Broadwell HD5300. To me, and it's a rare error, the Dortania guidance was erroneous in taking Haswell graphics (which they call Haswell Lake instead of Azul) as example; Broadwell & later graphics would have been a much better choice. 

ID: 0D220003, STOLEN: 32 MB, FBMEM: 19 MB, VRAM: 1536 MB, Flags: 0x00000402
TOTAL STOLEN: 52 MB, TOTAL CURSOR: 1 MB (1572864 bytes), MAX STOLEN: 116 MB, MAX OVERALL: 117 MB (123219968 bytes)
Camellia: CamelliaDisabled (0), Freq: 5273 Hz, FreqMax: 5273 Hz
Mobile: 0, PipeCount: 3, PortCount: 3, FBMemoryCount: 3
[1] busId: 0x05, pipe: 9, type: 0x00000400, flags: 0x00000087 - ConnectorDP
[2] busId: 0x04, pipe: 10, type: 0x00000400, flags: 0x00000087 - ConnectorDP
[3] busId: 0x06, pipe: 8, type: 0x00000400, flags: 0x00000011 - ConnectorDP
01050900 00040000 87000000
02040A00 00040000 87000000
03060800 00040000 11000000

 

If you inspect the code of the Azul graphics kext for your desktop HD4600 framebuffer, you'll find:


0300220D 00030303 00000002 00003001
00000000 00000060 99140000 99140000
00000000 00000000 01050900 00040000
87000000 02040A00 00040000 87000000
03060800 00040000 11000000 FF000000
01000000 40000000 020C0000 01010000
04000000 00000000 0E000000 00000000

where:


0300220D -> ig-platform-id
00030303 -> Mobile(00)/PipeCount(03)/PortCount(03)/MemCount(03)
00000002 -> StolenMem (32MB)
00003001 -> FbMem (19MB)
00000000 -> CursorMem (1MB apparently!)
00000060 -> VRAM (1536MB)
99140000 99140000 -> Frequencies (5273MHz)
00000000 00000000
01050900 00040000 87000000 -> 1st output port (con0 characteristics)
02040A00 00040000 87000000 -> 2nd output port (con1 characteristics)
03060800 00040000 11000000 -> 3rd output port (con2 characteristics)
FF000000
01000000 40000000 020C0000 01010000
04000000 00000000 0E000000 00000000

 

For defects such as the one you described, you may need to apply the cursormem patch (though this usually applies to laptops) where you increase the cursor bytes size from its default value to 9MB.


framebuffer-cursormem    00009000    DATA

But try without it 1st (and without the above 2 x injections of course).

 

The general rule is that fbmem + cursormem < stolenmem which would be the case here with cursormem set to 9MB: 19+9=28 which is lower than 32MB.

https://github.com/acidanthera/WhateverGreen/blob/master/Manual/FAQ.IntelHD.en.md

 

I tried using only ig-platform-id and the time period the stuttering occurs was decreased. I also tried the framebuffer-cursormem patch but that made the boot process get stuck and I had to hard reset. I guess for the moment I will use only ig-platform-id till I find the culprit.

 

Thanks for your help!

Link to comment
Share on other sites

52 minutes ago, Hervé said:

You could try to also apply ACPI renaming such as GFX0 (or whatever it is) to iGPU if that's at all applicable, though probably wouldn't make any difference. You may want to post a zipped copy of an IOReg extract saved from IORegistryExplorer app.

 

2 x questions:

  1. Is there any BIOS option to set DVMT at all (I think there isn't)?
  2. Do you have CPU power management/SpeedStep fully working? Make sure it's all enabled in BIOS, including Turbo boost (normally all is, except CPUID limit).

 

I found the solution thanks to reddit post.  I will write down what I did in case someone else has the same problem.

 

Apparently my computer has 3 connectors as shown in my IOREG.

 

 914088016_ScreenShot2021-04-08at3_18_12PM.png.a41b227ba9f3561a7138688d1c7b12d0.png

  • AppleIntelFramebuffer@0 is the LVDS connector 
  • AppleIntelFramebuffer@1 is the 1st DP connector
  • AppleIntelFramebuffer@2 is my 2nd DP connector
  • display0 shows under the connector u are using (in my case I'm using AppleIntelFramebuffer@1)

The problem is that the LVDS connector attempts to work during startup only (that's why the lag occurs for the first seconds). So the solution is to disable it so it doesn't even attempt to connect.

To do that under Device Properties > Add > PciRoot(0x0)/Pci(0x2,0x0) I added  

AAPLX,override-no-connect       DATA         00000000 00000000 00000000 00000000 00000000 

X refers to the number of the connector you want to disable. (for me it was 00).2.png.932c92264941c17782704282957c755e.png

It should look like that ^

 

Then I restarted and any lag was gone.

1 hour ago, Hervé said:

You could try to also apply ACPI renaming such as GFX0 (or whatever it is) to iGPU if that's at all applicable, though probably wouldn't make any difference. You may want to post a zipped copy of an IOReg extract saved from IORegistryExplorer app.

 

2 x questions:

  1. Is there any BIOS option to set DVMT at all (I think there isn't)?
  2. Do you have CPU power management/SpeedStep fully working? Make sure it's all enabled in BIOS, including Turbo boost (normally all is, except CPUID limit).

About the 1st question. For some reason DELL has hidden both CFG Lock and DVMT options in the bios. However they are accessible and u can change offsets with this driver modGRUBShell.efi.zip

Link to comment
Share on other sites

43 minutes ago, Hervé said:

Indeed, the number of connectors and attempted connections is a known problem for Haswell iGPUs and it's actually the reason why I was asking for your IOReg. But great that you found the fix by yourself. 

 

One minor correction regarding your above statement on connectors: there is no LVDS connector in the desktop HD4600 framebuffer 0D220003. As per the info posted in my initial response, all 3 x connectors con0/con1/con2 are DP (connector type 00040000). LVDS is a type of connector for laptops built-in LCD (like eDP).

 

Also note that the property you've added relates to EDID information as detailed in the WEG manual I linked in my initial response. I did not know that injecting a null value disabled all connection attempts to the connector. I was more familiar with other ways that disable the connector (i.e. output port) itself through direct connector patching to make it a dummy port. Glad I learnt something today. :P

 

Can you still use both DP ports of this Optiplex 7020 though? I guess you do if the ports actually relate to con1 and con2.

 

Yeah, I use DP to HDMI cuz my monitor doesn't have dp :/ but it works just fine. After disabling the con0 connector as u said I even got HD4600 HDMI audio working. However when I tried to switch to the 2nd DP port (while the pc was booted) 1st attempt gave me a black screen and the 2nd one worked fine but no HDMI audio. I guess that's not a big deal since I don't plan to use a 2nd monitor.

 

Now another question hit my head. Should I use the HD4600 hdmi audio or my integrated ALC280? I tried both but can't figure out what's better :D

 

Also since con0 isn't LVDS cuz my it's a laptop only connector what could it be. con1 and con2 are the 2 DP bcuz I tested em out. Could con0 be the VGA port? 

 

 

Edited by NBABASKETBALL
Link to comment
Share on other sites

29 minutes ago, Hervé said:

As I said, all 3 x connectors are DP, that's how they are defined in the Azul framebuffer kext. HD4600 carries no support whatsoever for VGA (only some laptops with HD4400 get it OOB) so, if the Optiplex 7020's VGA port were indeed associated with con0, that'd be dead anyway.

 

As for DP/HDMI audio vs. line-out/headphone analog output (I guess that's what you meant since both are just outputs driven by your integrated ALC280 codec), it's entirely up to you. It could be argued that, being digital, HDMI audio would be better quality but it's probably quite difficult to make much of a difference out of a screen's little speakers. Volume control may also come into play (computer controlled for built-in analog output vs. external device controlled for DP/HDMI audio).

 

Okay thx for your help! :thumbsup_anim:

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...