Hello, everyone,
there has long been a problem with running the Windows Intel HD 3000 driver on 2011 MacBook Pros with the dGPU disabled: the firmware-provided VBT contains incorrect information for the internal dual-channel LVDS panel. Until now, enabling the Intel driver would result in corrupted display output.
We finally have a relatively simple fix. It may be not too relevant these days, but still better late than never, sadly we didn't have Fable/Sol class models 10 years ago to be able to empower any layman to find a solution to problems like these.
What the fix does
On the 17-inch 2011 MacBook Pro (MacBookPro8,3), the LFP entry in Apple’s Video BIOS Table normally describes a generic 1280×800 panel instead of the machine’s actual 1920×1200 dual-channel LVDS display. When the Windows Intel HD 3000 driver takes control, it relies on this incorrect information and programs the display hardware incorrectly, producing a corrupted image. The attached UEFI driver patches the existing LFP entry in place with the correct MacBookPro8,3 panel configuration before Windows boots. This allows the Intel HD 3000 driver to initialize the internal display correctly, with full graphics acceleration.
I hold no credit to this fix personally, as it's a collaborative work by Claude Fable and ChatGPT Sol, and I only did the field testing.
Installation and requirements
Attached are two .efi drivers, one for native 60Hz, the other for 90Hz (one redeeming quality of these swan song TN panels is that they usually allow for stable overclocking, and I personally prefer running this MBP at 90Hz), these drivers are injectable via OCLP (which you'd want to use anyway for working sound/correct PCI table on UEFI Windows installs on 2011 machines). Simply unzip the files to OC/Drivers folder on your EFI partition where you installed OpenCore and add the following entry to the OpenCore config.plist right below the ResetNvramEntry.efi dict:
<dict>
<key>Arguments</key>
<string></string>
<key>Comment</key>
<string></string>
<key>Enabled</key>
<true/>
<key>LoadEarly</key>
<false/>
<key>Path</key>
<string>MBP83Vbt90InPlaceDxe.efi</string>
</dict>
(replace <string>MBP83Vbt90InPlaceDxe.efi</string> with <string>MBP83Vbt60InPlaceDxe.efi</string> if you prefer native 60Hz instead)
I can confirm that the fix works correctly on my machine, including the internal display, Intel HD 3000 graphics acceleration, and 90 Hz refresh rate. The change is not permanent and does not flash or modify the Mac’s firmware. The driver patches the existing Intel graphics OpRegion in RAM on each OpenCore boot, and the original state is restored after a reboot.
These binaries are specifically configured for the 17-inch MacBookPro8,3 and won't work on any other model, although source code allows for creating custom resolution variants provided you can first capture complete panel timing, its firmware VBT layout, and live register values of your model.
Edit: Updated the attachments to include the source code, reproducible build scripts, instructions for creating custom refresh-rate and resolution variants, and a revised 90 Hz driver using slightly more conservative timings.
there has long been a problem with running the Windows Intel HD 3000 driver on 2011 MacBook Pros with the dGPU disabled: the firmware-provided VBT contains incorrect information for the internal dual-channel LVDS panel. Until now, enabling the Intel driver would result in corrupted display output.
We finally have a relatively simple fix. It may be not too relevant these days, but still better late than never, sadly we didn't have Fable/Sol class models 10 years ago to be able to empower any layman to find a solution to problems like these.
What the fix does
On the 17-inch 2011 MacBook Pro (MacBookPro8,3), the LFP entry in Apple’s Video BIOS Table normally describes a generic 1280×800 panel instead of the machine’s actual 1920×1200 dual-channel LVDS display. When the Windows Intel HD 3000 driver takes control, it relies on this incorrect information and programs the display hardware incorrectly, producing a corrupted image. The attached UEFI driver patches the existing LFP entry in place with the correct MacBookPro8,3 panel configuration before Windows boots. This allows the Intel HD 3000 driver to initialize the internal display correctly, with full graphics acceleration.
I hold no credit to this fix personally, as it's a collaborative work by Claude Fable and ChatGPT Sol, and I only did the field testing.
Installation and requirements
Attached are two .efi drivers, one for native 60Hz, the other for 90Hz (one redeeming quality of these swan song TN panels is that they usually allow for stable overclocking, and I personally prefer running this MBP at 90Hz), these drivers are injectable via OCLP (which you'd want to use anyway for working sound/correct PCI table on UEFI Windows installs on 2011 machines). Simply unzip the files to OC/Drivers folder on your EFI partition where you installed OpenCore and add the following entry to the OpenCore config.plist right below the ResetNvramEntry.efi dict:
<dict>
<key>Arguments</key>
<string></string>
<key>Comment</key>
<string></string>
<key>Enabled</key>
<true/>
<key>LoadEarly</key>
<false/>
<key>Path</key>
<string>MBP83Vbt90InPlaceDxe.efi</string>
</dict>
(replace <string>MBP83Vbt90InPlaceDxe.efi</string> with <string>MBP83Vbt60InPlaceDxe.efi</string> if you prefer native 60Hz instead)
I can confirm that the fix works correctly on my machine, including the internal display, Intel HD 3000 graphics acceleration, and 90 Hz refresh rate. The change is not permanent and does not flash or modify the Mac’s firmware. The driver patches the existing Intel graphics OpRegion in RAM on each OpenCore boot, and the original state is restored after a reboot.
These binaries are specifically configured for the 17-inch MacBookPro8,3 and won't work on any other model, although source code allows for creating custom resolution variants provided you can first capture complete panel timing, its firmware VBT layout, and live register values of your model.
Edit: Updated the attachments to include the source code, reproducible build scripts, instructions for creating custom refresh-rate and resolution variants, and a revised 90 Hz driver using slightly more conservative timings.
Attachments
Last edited: