[Solved] automate-eGPU EFI - eGPU boot manager for macOS and Windows
3) sudo pmset -a gpuswitch 2
4) sudo pmset -a gpuswitch 0
then:sudo nvram fa4ce28d-b62f-4c99-9cc3-6815686e30f9:gpu-power-prefs=%01%00%00%00
6- Hold option, press [q] select windows
7- Enjoy either the blank screen, the rotating white pattern, or the windows boot spinner.
So I always go back to the same behaviour:
1- iGPU is apparently running, driver loaded, I can even query its DXVA and D3D11 capabilities with tools such as DXVA Checker, yet it's not used as display controller, the Microsoft Basic one is
2- Blank or funny screen.
There's something messy about it...
I was bitching about this whole thing a couple of weeks ago to some Apple engineers that happened to be at the same conference I was, and they told me at the time that they hadn't written intel drivers for the MBP yet and it couldn't be switched, and was asked to open a bug about it (at Apple, if a bug isn't opened, the problem doesn't exist really). So I did, and it was closed the following day withThank you for your feedback, it is noted. Engineering has determined that there are currently no plans to address this issue. Unfortunately, Boot Camp currently does not support graphics muxing. It is something we will investigate for the future.
Thank you for the comprehensive testing. It confirms what I was afraid of: the firmware of the new 2018 15" rejects attempts to activate the iGPU by known methods.
Please download UEFI Shell:
- Format an USB stick in OS X Disk Utility (Choose Erase, Format: MS-DOS (FAT), Scheme: Master Boot Record)
- Create a folder structure in Finder as follows: EFI/Boot/bootx64.efi
where bootx64.efi is the renamed Shell_Full.efi file from /Edk/Other/Maintained/Application/UefiShell/bin/x64/folder
Then hold down the Option key and select "EFI Boot".
Type "devtree -b" to see which GPU is driving the internal display.
Our last chance is to access the gmux through IO address space:
mm -io 7D0 10 -n mm -io 7C2 -n
What's the output?
This post serves as a summary of what happened in my tests:
- Control Case #1: Standard Windows 10 boot using AMD drivers from bootcampdrivers.com: no issues. GPUs in Device Manager: RP560X. Internal display active.
- Control Case #2: Boot with AMD RX 480 plugged in from the start: no internal display, but external worked fine. GPUs: RX 480, RP560X.
- Control Case #3: Boot with GTX 1070 plugged in from the start: no internal display, but external worked fine. GPUs: GTX 1070, RP560X.
- EFI Boot #1: Windows boot using the EFI stick -> yellow banged MSFT Basic Adapter + RP560X. Unaccelerated internal display.
- EFI Boot #2: RP560X was disabled prior. Working MSFT Basic Adapter and RP560X disabled. No mux changes made yet. Installed the UHD 630 drivers manually: blacked the unaccelerated internal display.
- EFI Boot #3: Rebooted after the drivers were installed, same configuration as above. Result was a black screen. No mux changes made yet.
- EFI Boot #4: Boot with eGPU + external monitor, rest same as above. External monitors came to life with UHD 630 available and ready to go in device manager.
- EFI Boot #5: MuxSetting=1 and boot as above. Spinning circles with keyboard lighting up. No dice.
- EFI Boot #6: NVRAM setting instead and boot as above. Spinning circles with keyboard lighting up. No dice.
- EFI Boot #7: Re-attempt #4 after clearing NVRAM and MuxSetting after effects (verified in macOS). Cannot reproduce.
Every EFI boot was followed by 1-2 clean non-EFI stick boots.
Looks like I have NvidiaWeb YES from the script install even though I choose AMD. Removing fixes the problem.
Yes, the script installed EFI causes a frozen login screen if I startup with egpu connected and my manual installation works normally. Hot-plug and log-out doesn't get egpu recognized but unload and reload the thunderbolt kext and egpu is recognized and the icon stays in the menubar
Thank you for testing. Could you share the config.plist files of your working vs. the script-created file?
Update: Ok I saw your post and yes I thought that wasn't making a difference. Bad me. An update to the script will remove that when choosing AMD.
@nu_ninja script has been updated. Could you try again?
Yes, I do have Windows. Doesn't need any mods to get eGPUs working though.
I can confirm this. No mods, no patch, no bootloader and eGPU is running perfectly in Windows 1803 on 2018 MPB 15.
But: You get the interal display running by the Microsoft Basic Display Adapter and you can't change the resolution or do anything more than display:
the UHD available as a compute unit while using the accelerated external display (if you are using one). Maybe mention your config. in your signature.
Before today, I never tried getting the iGPU to work in Windows so I don't have much experience with this. While I was running on the eGPU-display, the UHD 630 was available for compute as in your case.
Thanks. I don't have an eGPU chassis.
My aim here was to have a universal dev machine I could use on the go. My desktop has both a Vega 64 and 1080ti, I can always do my work there if needed. Unfortunately, my desktop is about 17kg, so it makes it difficult to carry in a backpack
Having the Intel has a compute unit is unfortunately not possible. When using the hardware decoders, you get a GPU based frame (a texture really). You can only render such texture if you have a D3D11/DXVA HW accelerated display adapter.
But when the Intel is active, you always end up using the Microsoft Basic Graphic adapter, which is software only.
I work on video players (Firefox Web browser), ability to use HW decoder is a must for both performance and battery life.
@oliverb If using an NVIDIA eGPU, you can get the internal display to function fully accelerated as well, if the eGPU is hot-plugged at the right time and no other peripherals are present.
@nu_ninja Appreciate you testing this quickly Thanks a bunch!