How to patch your AGPM
0. You cannot use MacPro3,1 system definition, as it will not load the AGPM kext, I recommend that you use MacPro5,1. You can do that easily using MultiBeast:
Also, when you're using MacPro5,1 system definition, don't forget to delete AppleTyMCEDriver.kext from /System/Library/Extensions, as it may prevent you from booting.
1. Locate AppleGraphicsPowerManagement.kext in /System/Library/Extensions, then right/ctrl-click it and choose "Show package contents" to open it.
2. Open the Contents directory. You should see a file named "Info.plist", open it in a text editor of your choice. (the default TextEdit.app will do just fine)
3. Using cmd+F locate the MacPro5,1 section.
4. Now, you need to find your GPU's Device ID, it's under About This Mac -> More Info... -> System Report... -> PCI Cards. Vendor ID will be always
0x10de for Nvidia. My GTX 560 Ti's Device ID is 0x1200.
5. Change the "<key>Vendor10deDevice05e2</key>" accordingly. I have changed mine to "<key>Vendor
10deDevice
1200</key>".
6. Now, you need to change the Threshold Low and High numbers, here's what I use:
Code:
<key>Threshold_High</key>
<array>
<integer>55</integer>
<integer>40</integer>
<integer>60</integer>
<integer>100</integer>
</array>
<key>Threshold_Low</key>
<array>
<integer>0</integer>
<integer>75</integer>
<integer>90</integer>
<integer>100</integer>
</array>
Basically, you can use anything you find on the internet, just remember to keep those 100s in last rows. This will prevent you card from going to state 3 (it will go there only if 100% idle...), which is where those freezes occur.
7. If you want to see how your GPU switches between those power states in Console, change that 0 under LogControl to 1.
8. Now you should be done with editing Info.plist. This is how mine looks like with changes highlighted:
Code:
...
<key>MacPro5,1</key>
<dict>
<key>Vendor10deDevice[color=red]1200[/color]</key>
<dict>
<key>Heuristic</key>
<dict>
<key>ID</key>
<integer>0</integer>
<key>IdleInterval</key>
<integer>250</integer>
<key>SensorOption</key>
<integer>1</integer>
<key>SensorSampleRate</key>
<integer>4</integer>
<key>TargetCount</key>
<integer>5</integer>
<key>Threshold_High</key>
<array>
<integer>[color=red]55[/color]</integer>
<integer>[color=red]40[/color]</integer>
<integer>[color=red]60[/color]</integer>
<integer>[color=red]100[/color]</integer>
</array>
<key>Threshold_Low</key>
<array>
<integer>[color=red]0[/color]</integer>
<integer>[color=red]75[/color]</integer>
<integer>[color=red]90[/color]</integer>
<integer>[color=red]100[/color]</integer>
</array>
</dict>
<key>LogControl</key>
<integer>[color=red]1[/color]</integer>
<key>control-id</key>
<integer>18</integer>
</dict>
...
9. Finally you should repair permissions and rebuild cache. I recommend using Kext Wizard for this:
Alternatively, you can do "sudo touch /System/Library/Extensions" in terminal and repair permissions from Disk Utility.
10. Reboot and enjoy!