1.2 still at beta stage. Bmju is helping us to solve the Radeon VII's issue. Therefore he send me the direct link to perform beta testing. Anyway, at this moment, regardless if the new version can fix the Radeon VII's issue, it should able to provide a noticeable performance improvement. In my own test, the rendering speed can be up to 32x faster.
No. The discovery of GopBurstMode (with its very significant rendering speed up on some GOPs, including some speed up on Radeon VII) came out of trying to fix it, but no fix so far. It has artefacts but is usable in Apple native picker and no artefacts in OC menu, with the best settings available so far.
You wait ten years for a driver to enable pre-boot graphics on unsupported GPUs in EFI era Macs, and then two come along at once...
This post is to announce a firmware driver to enable the native Apple boot picker and early macOS boot progress bar (plus other parts of the firmware UI: target disk mode; firmware password; internet recovery on machines which have it; etc.) on non-natively supported GPUs, before, or even without, the rest of OpenCore.
The basic idea is: if your GPU already works in but not before OpenCore, then with this driver added to your VBIOS or firmware it should be able to work before OpenCore, too.
Its status is beta - it has been reasonably widely tested (more so on iMac than on Mac Pro, but on both), but nevertheless it is a new firmware driver:
If for any reason it fails (or perhaps is incorrectly installed) it can completely brick your machine.
If you are not comfortable modifying and burning updates to firmware or VBIOS, and recovering from bricks of either of these (which will involve additional hardware) - do not proceed. (Or at the very least, wait for clear and replicable instructions and proven success stories for your specific system, from other users who do have this expertise, before proceeding.)
Instructions and required files can be found in the /Utilities/EnableGop directory of the current OpenCore release. For the very latest build (if any recent updates have been made) see the first couple of posts in the thread below.
Background
This driver has a completely separate origin and development history from @Syncretic's current impressive work. This driver aims to be lightweight and standalone. It comes naturally out of the huge amount of work already done in OpenCore (and mainly finished a couple of years ago, except for these additional steps) to support the OpenCore boot menu on non-natively supported GPUs, within OpenCore. It is also - as part of OpenCore - open source.
After reversing enough of the firmware to work out how to link OpenCore’s GOP to the Apple firmware UI protocol, it seemed worth trying to enable this before OpenCore as well - i.e. to try to get 'as native' support for these cards. A little bit more experimentation made it clear that the best way to do this would be to piggy-back off the existing, very well tested work already done in OpenCore to support these cards - basically to package up the required parts of OpenCore (ForgeUefiSupport, ProvideConsoleGop and the recent code to connect this to the Apple firmware UI) into a firmware injectable driver, and then figure out a way to deliver its 'payload' (particularly the ProvideConsoleGop part) at the right time. Early versions also used OpenCore’s ReloadOptionRoms, as OpenCore has to do, to load any option ROM which needs ForgeUefiSupport - but with the correct approach it was possible to avoid this, letting the firmware do it for us, which turned out to make the driver much more stable.
So after considerable reversing, some additional new code, and a lot of helpful testing and input from those listed below, this is now working.
Tested Mac models:
MacPro4,1/5,1
MacPro5,1
iMac11,1
iMac11,2
iMac11,3
iMac12,2
Notes:
The current version of the driver is believed to be safe on all 2009-2012 iMacs and on the MacPro4,1/5,1 and MacPro5,1
iMac12,1 should be supported but not yet known: a confirmed test result would be welcome
Most recent available firmware in all cases
Other Mac models not yet tested, and outside the ones listed above probably will not work (since the required patches apply to the listed firmware only) - please PM me to discuss support
NOT Supported:
The current version of the driver is NOT compatible with the MacPro3,1, it will make the boot process hang and should not be installed there
Tested GPUs:
GT640
GT710
GT720 (EnableGopDirect)
GTX60
GTX660
GTX670
GTX750Ti
GTX780
GTX960
GTX1050Ti
GTX1070
GTX1080Ti
K2000
K2000d
K600 (with GOP addition in VBIOS)
M4000
M5100
M6100
P3000
Radeon VII (EnableGopDirect)
This card shows some visual artefacts which are not present on any other listed supported cards, however is usable (see discussion in thread below)
RX480
RX5500XT
RX5700XT
RX560
RX570
RX580
S7100X
WX4150
Notes
All GPUs work with EnableGop, unless explicitly listed as requiring EnableGopDirect
Some GPUs listed above may need additional firmware - such as a GOP driver for older GPUs which do not come with one; or other patches - in order for them to work with OpenCore in the first place (hence to be eligible to work with EnableGop in firmware); try searching for the card in this thread or the following iMac specific threads:
The driver should also work fine with natively supported GPUs such as GT120 (tested) (e.g. when installed in main firmware and swapping cards)
It should work with OpenCore (of course) and with RefindPlus
OpenCore settings which this driver already implements can be, but do not have to be, disabled
Releases of EnableGop in not-yet-released versions of OpenCore may be obtained as per the first couple of posts in the thread below. Older versions may be downloaded as required from the named OpenCore release.
EnableGop version (released with OpenCore version):
1.2 (0.9.1)
Added GopBurstMode support
Note 1: There were a couple of reports of GopBurstMode causing problems on systems which are supported for EnableGop, however both of these have now been put down to other factors - which is to say, there are now no confirmed reports of any problems. However, as a precaution, it would be wise to test enabling GopBurstMode in OpenCore before installing version 1.2 into firmware, since GopBurstMode is enabled by default in both EnableGop and EnableGopDirect 1.2.
Note 2: GopBurstMode should provide faster GOP rendering on all EnableGopDirect systems; and rendering at least at the same speed as before, and on some systems noticeably faster than before, on almost all EnableGop systems.
Note 3: The compressed driver for version 1.2 is 1KB larger than for version 1.1, so for AMD vBIOSes which are tight on space version 1.1 may be used instead to avoid the need for VGA stripping to make additional space.
1.1 (0.9.0)
Fixed early verbose boot lines appearing over picker
Added EnableGop version number to UI section
1.0 (0.8.9)
Initial public release
The vBIOS insertion script vBiosInsert.sh now supports both AMD and Nvidia cards. To be released in OpenCore 0.9.0 - available now in the most recent builds - see first couple of posts in this thread below.
In the case of AMD, considerably less space is normally available than with Nvidia, due to a strict limit of 128k for legacy and EFI parts of the potentially larger ROM image (the rest of which is only usable internally by the card itself).
So far, there has largely been enough spare space on desktop format (PCIe) cards for Mac Pro, and not enough space on iMac format (MXM) cards. If there is not enough space (i.e. script reports data would be truncated) then it is necessary to strip some legacy VGA parts of the vBIOS, or check over on the iMac GPU threads here and here to see if this has already been done for your card.
You can also inject EnableGop into the main system firmware instead of the GPU vBIOS - see the README.md file in the Utilities/EnableGop directory of the most recent OC builds, or here. In that case the AMD vBIOS limit does not matter.
The script relies on the EDK-II EfiRom tool to compress the driver EFI file into option ROM format, and on UEFIRomExtract as part of verifying the modified ROM.
A current version of EfiRom can be obtained from the Utilities/BaseTools directory of OpenCore releases (0.9.0+)
Hello, I am a user of macpro5.1. I have read your wonderful technical literature, but due to my poor computer programming ability, I cannot understand the section where the two files are in the same path, so I cannot add the EFI display on my RX590 video card. If you have time, could you please help me modify the VBIOS file? thank you
Hello, I am a user of macpro5.1. I have read your wonderful technical literature, but due to my poor computer programming ability, I cannot understand the section where the two files are in the same path, so I cannot add the EFI display on my RX590 video card. If you have time, could you please help me modify the VBIOS file? thank you
Like most similar threads here - at least, ones that don't offer a paid service - this is more a 'help you to help yourself' thread. I'm sure if you can be a bit more clear about what you tried and where you got stuck, then I or someone else can help you figure out what to do next.
I am very glad to receive your reply, and I am trying my best to do it well, but I do not understand this step very well, perhaps because my knowledge level is limited.
@MARKBOOM there is no need to re-quote over and over again the same thing. He asked you specifically what are you trying to do? Are you trying to patch your Vbios or the firmware? When you download OpenCore and navigate to the GOP folder there is a readme file with instructions.
I am very glad to receive your reply, and I am trying my best to do it well, but I do not understand this step very well, perhaps because my knowledge level is limited.View attachment 2185973
I have downloaded the required files and extracted them in the graphics card bios. As a hardware engineer, I don't have much software programming ability. Please kindly ask your brother to help me complete the modification
I have downloaded the required files and extracted them in the graphics card bios. As a hardware engineer, I don't have much software programming ability. Please kindly ask your brother to help me complete the modification
So I guess I'm more or less repeating myself, but this and similar threads on here are for hobbyists, using tools and systems developed by hobbyists, in order to get extra life out of machines which are no longer supported by Apple. You need to have, or at least be prepared to gain, some familiarity with things like the shell (terminal) and at least its basic commands for navigating and creating directories, moving files, running scripts, etc.
I have downloaded the required files and extracted them in the graphics card bios. As a hardware engineer, I don't have much software programming ability. Please kindly ask your brother to help me complete the modification
It took me a few minutes also to get it running (being a hardware design engineer myself it has been a while since I wrote my own code for my electronics).
Here we go with the fundamentals (many ways to Rome, but here's what worked for me)
* create a folder like "GOP" or the like in your user folder on your boot drive
* put these four files in there: EfiRom (the executable), EnableGop.efi (the additional code section for the vBios), UEFIRomExtract (another executable) and the vBiosInsert.sh (shell command script)
* open terminal
* cd into your new folder (i.e. "GOP") - you can drag and drop the folder to the command line after "cd "
* add the folder path to the PATH variable with command "export PATH=$PATH:<your GOP folder here>" (again drag&drop possible for convenience, no whitespace between : and folder path, of course also without quotation marks)
* the PATH variable does not "stick" this way, so you'd have to redo the last step each time you open a terminal session -> see here to make it permanent
* now ./vBiosInstert.sh ... ... ... will run provided with the right set of input and output files
Result should look like this:
./vBiosInsert.sh -n k420.rom EnableGop.efi k420GOP.rom
Auto-detecting GOP offset...
Compressing EFI using EfiRom...
Adding Nvidia header...
Combining...
Verifying (starting at 0xFA00)...
Found compressed EFI ROM start at 0x50
Input size: 162224, Output size: 57344, Scratch size: 13376
The issue with non-standard framebuffer reporting by the AMD Radeon HD 7970 is now fixed, and added to the OpenCore source code for EnableGop/EnableGopDirect version 1.3, to be released with OpenCore 0.9.2 (or available now for preview - see first few posts).
Unless anything else crops up between now and 0.9.2 release, I will keep GopBurstMode enabled in both EnableGop and EnableGopDirect; after the fix mentioned above, I am not aware of any current issues on any supported cards or systems.
Looking for ideas on two issues with "GOPping" cards, perhaps someone has a clue or two ;-)
1. Attempts to insert the GOP efi section with the shell script often end with an error in the verification phase being unable to extract the UEFI (again?). Have not tried to flash the result back to the cards, yet. File sizes seem ok, about 9-10KB larger than originals but still within the size of the SPI flash chips. Any hints on that?
2. One BIOS of a card (a Quadro k420) seems to work (no script errors, success), but it does have a strange behavior on cold start after flashing: It shows a black screen for a long time, and only Windows 7 boot loader inits it to a white empty screen and stops booting then. Also strange: The white screen has a border around it just like a 16 pixels or so frame. With the original flash contents, the K420 will get initialized correctly by OCLP for the boot picker...
As far as I understood the patch for the EFI of the Mac Pro does not work on the 3,1.
Besides that known issue, why should a patched graphics card not also work in an MP3,1?
hi, new here… using a MP5,1, latest FW, 10.14.6, Vega56 flashed by macvidscards, 96GB ROM etc. since this is my production system, i have so far hesitated to move up.
however, i have downloaded martin's lastest package and i'm prepared to install monterey on a separate SSD. there is too much information on the web about what's supported and what not. my three main questions:
- can i use my metal-flashed Vega56 (with boot screen on 10.14.6) with martin's package? i have not found any mention whether this card is supported
- i've read about UBS 3 issues with monterey. i use a sonnett allegro pro type A USB 3.1 PCIe card. will this work without further mods?
- i have also installed a sonnett M.2 4x4 PCIe card and a sonnett Solo 10G PCIe card. will these work, too, without mods?
hi, new here… using a MP5,1, latest FW, 10.14.6, Vega56 flashed by macvidscards, 96GB ROM etc. since this is my production system, i have so far hesitated to move up.
however, i have downloaded martin's lastest package and i'm prepared to install monterey on a separate SSD. there is too much information on the web about what's supported and what not. my three main questions:
- can i use my metal-flashed Vega56 (with boot screen on 10.14.6) with martin's package? i have not found any mention whether this card is supported
- i've read about UBS 3 issues with monterey. i use a sonnett allegro pro type A USB 3.1 PCIe card. will this work without further mods?
- i have also installed a sonnett M.2 4x4 PCIe card and a sonnett Solo 10G PCIe card. will these work, too, without mods?
Could anyone post success stories (versions of tools used and GOP boot screen modded cards) ?
Still stuck with the scenario described above... I have the impression, I'm just using the "wrong" cards!?
Could anyone post success stories (versions of tools used and GOP boot screen modded cards) ?
Still stuck with the scenario described above... I have the impression, I'm just using the "wrong" cards!?
As far as I understood the patch for the EFI of the Mac Pro does not work on the 3,1.
Besides that known issue, why should a patched graphics card not also work in an MP3,1?
Looking for ideas on two issues with "GOPping" cards, perhaps someone has a clue or two ;-)
1. Attempts to insert the GOP efi section with the shell script often end with an error in the verification phase being unable to extract the UEFI (again?). Have not tried to flash the result back to the cards, yet. File sizes seem ok, about 9-10KB larger than originals but still within the size of the SPI flash chips. Any hints on that?
2. One BIOS of a card (a Quadro k420) seems to work (no script errors, success), but it does have a strange behavior on cold start after flashing: It shows a black screen for a long time, and only Windows 7 boot loader inits it to a white empty screen and stops booting then. Also strange: The white screen has a border around it just like a 16 pixels or so frame. With the original flash contents, the K420 will get initialized correctly by OCLP for the boot picker...
1. It is best to treat verification failure as a failure. If it still doesn't work, post specific machine, GPU and error messages, and maybe attach the problem GPU ROM itself too.
Could anyone post success stories (versions of tools used and GOP boot screen modded cards) ?
Still stuck with the scenario described above... I have the impression, I'm just using the "wrong" cards!?
EnableGop depends on the firmware. It doesn't matter if it is patched into vBIOS or firmware itself, it won't work on MP3,1.
Actually there are several posted over the pages of this thread.
That's this scenario below, right?
1. It is best to treat verification failure as a failure. If it still doesn't work, post specific machine, GPU and error messages, and maybe attach the problem GPU ROM itself too.
Thanks for the hints.
The "success" story for my K420 was only about the usage of the tools and the logs from terminal. This card did not work in the 3,1 (for obvious reasons) but also not on my 5,1. So the question is now: Do I also have to run the script and tools on a 5,1 instead of 3,1 -> would have thought that the patching process itself is agnostic of this?
Will do the steps again and provide info on the outcome here...
it doesn't matter on what machine you run the script. you can run them on any computer who is able to execute the script and flash the result to the cards vbios.