I very recently solved the same situation you seem to have: 5,1 bootROM with EnableGOP, OCLP, and a (used eBay) Sapphire Pulse RX 580 8GB with dual BIOS switch but no boot picker unless AMD Inject GOP was selected in the advanced OCLP config.
There is a method for flashing GPU directly on a cMP. I’m posting steps with screenshots. Even if it doesn’t help you, perhaps it will help others. I expect this method will work with any suitable GPU.
Look at white sticker on GPU card. Model info will help narrow the BIOS hunt on TechPowerUp.
View attachment 2303277
Note the thin red box highlighting E353.
At
TechPowerUp’s video BIOS collection set filters to match the GPU.
View attachment 2303278
Nitro+ models are included so scroll to the bottom and see 7 versions for Pulse.
View attachment 2303279
Click details for each Pulse model and look at third line under “BIOS Internals”. There are 4 versions matching E353 and 3 versions for E387.
View attachment 2303280
View attachment 2303281
Comparing the 4 possible matches, the most obvious difference is memory. By build date, they show
2017-03-10 Hynix
2017-03-24 Autodetect, Hynix, Samsung
2017-11-20 Micron
2018-07-19 Autodetect, Hynix, Samsung w/ more aggressive timings
One could open the card to physically examine memory but the necessary info emerges later in the process. It is easy to downloaded all 4 files, but on a hunch I downloaded the two with Hynix/Samsung.
Next create a bootable linux flash drive to run a GPU ROM flash tool:
Download and install
balenaEtcher. Currently this app must run from an admin account. The app asks for a password without asking for a user, and it fails to pass forward a root password from a non-admin account. The app assumes the logged in user has admin rights.
Download grml-flash (aka “
November_Rain”).
Use balenaEtcher to load NOVEMBER_RAIN.dmg onto a USB flash drive. Do not mount the dmg beforehand.
View attachment 2303282
After balenaEtcher finishes, open the USB drive, navigate to the folder flash/Video, and copy into it all BIOS chosen from TechPowerUp.
Shut down the cMP and disconnect all boot drives. Connect a wired keyboard and mouse.
Insert the USB flash drive into a front USB port and boot the machine. Be patient, the system will eventually determine the USB drive is the only boot option and will load grml linux. Assuming the GPU has no pre-boot screen functionality, it may be a minute or more before a console appears on the screen.
Select or ignore the option to localize keyboard.
Press ‘x’ to launch the grml linux GUI.
Right-click anywhere on the screen and select ‘xterm’.
(If nothing appears on-screen after several minutes and haven’t gotten this then SSH into the machine to proceed. I did that in order to save screenshots from Terminal. The user=root and password=flash ).
On the command line enter lsblk and look for the sdd result. ( It can change with each boot so don’t assume it will always be the same. ) Use that path to cd into the Video folder containing the flash tools and downloaded BIOS.
View attachment 2303283
Run the ls command to see the tools and BIOS.
View attachment 2303284
Enter this command to identify the adapter used with the AMD GPU to be flashed. (If flashing an Nvidia GPU then use instructions for nvflash instead.)
sudo ./amdvbflash -i
Assuming there is only one card in the system the result will likely be 0. To get additional information about the GPU enter
sudo ./amdvbflash -ai 0
View attachment 2303285
Look at the “Bios Config File” info highlighted by the red rectangle. Compare this to the various “BIOS Internals” shown on TechPowerUp and there is only one match for this case — BIOS 2017-03-24 with Hynix/Samsung. This is the correct ROM to flash this GPU.
View attachment 2303286
Backup the current ROM ( replace ‘<currentbios>’ with a filename you chose)
sudo ./amdvbflash -s 0 <currentbios>
View attachment 2303287
Flash the matched bios (replace ‘<newbios>’ with your correct BIOS)
sudo ./amdvbflash -f -p 0 <newbios>
View attachment 2303288
Reboot the system leaving in the linux grml USB drive. If the the flash was successful a pre-boot screen appears much earlier in the process than before.
Shutdown, remove the USB drive, reconnect internal boot drive(s), and boot. It may be overkill, but I did a deep NVRAM reset (hold CMD-OPT-P-R through three chimes, let go, you’ll hear a fourth) to clear any lingering GPU parameter that might be there. Tsialex or someone else might comment on whether that step has any real value!
In OpenCore-Patcher change Advanced settings to disable AMD Inject GOP, install, and reboot. If all is well then you’ll see the boot picker as expected.