MacBook Pro (2018) + Blackmagic eGPU Pro で Windows 10 を起動できた！ (おそらく)

# 前回のあらすじ
Mac mini (2018) に Blackmagic eGPU Pro を接続して Boot Camp 環境で Windows 10 を使おうと思ったら、どうがんばっても Windows 10 で eGPU を有効にすることができず、あえなく断念しました。

[Mac mini (2018) + Blackmagic eGPU Pro の組み合わせで Boot Camp 環境の Windows 10 を使用することはできない（たぶん......）](https://ja.developers.noraworld.blog/cannot-boot-windows-10-with-egpu-on-boot-camp)

そもそもなぜ eGPU を使って Windows 10 を起動したかったかというと、

1. PC ゲーム (Windows のみ対応) や VR ゲームをやりたかった
2. Mac は持っているが Windows PC を持っていない
3. Mac 単体では GPU のパフォーマンス的に動作困難
4. eGPU を使って Mac で Windows 10 を動かせば良い！

という経緯でした。

仕方ないので Mac でなんとかするのは諦めて、おとなしく Windows PC を買おう (or 自作 PC を組もう) と思ったのですが、「今は時期が悪い」を繰り返していた結果、まだ Windows PC を手に入れられていない今日このごろです。

# Boot Camp 再び
あれから 5 ヶ月経ち、その間もゲームが快適にプレイできる Windows 環境が欲しいという気持ちは燻ることなく心のどこかにずっと残り続けていました。

そして最近になって、その気持ちが爆発してもう一度チャレンジしてみたくなりました。おとなしく Windows PC 用意すれば良いんですが、5 ヶ月前にどうしてもうまくいかなかった Boot Camp with eGPU にリベンジしたかったんですよね。諦めの悪い人間です。

しかし、[前回使用していた Mac mini はメルカリで売却してしまった](https://www.mercari.com/jp/items/m98158423391/) ので、今回は MacBook Pro でチャレンジしてみました。

すると、なんということでしょう。前回あれだけ苦労していろいろ試しても解決しなかったのに、今回やってみたらあっさりと eGPU を有効化させることができてしまいました。前回は `apple_set_os.efi` を使って Apple のファームウェアをバイパスするなどのトリッキーなことをやっていましたが、それすら今回は必要なかったです。

ただし、表記上は eGPU が有効になっているのに全然使われていなかったり、VR ゲームをやる際に HMD (ヘッドマウントディスプレイ) に何も映像が映らないという問題にぶち当たって、原因を探るのに 3 日ほどかかってしまったので、今回はそれらの罠も踏まえつつ、eGPU を有効化して Mac で Windows 10 を使う方法について紹介します。

# 環境
| 種類 | 内容 |
|---|---|
| Mac | MacBook Pro (2018) |
| eGPU | Blackmagic eGPU Pro (AMD Radeon RX Vega 56) |
| macOS | macOS Catalina バージョン 10.15.7 |
| Windows | Windows 10 20H2 |

<details><summary>詳細情報 (Windows 10)</summary><div>
![スクリーンショット 2020-11-17 004601.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/113895/78cfc488-f1bc-7df8-4a49-2a7930406007.png)
</div></details>

<details><summary>この Mac について (macOS)</summary><div>
![スクリーンショット 2020-11-14 4.42.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/113895/f2a12b7e-087a-8f13-242a-6f136210d29f.png)
</div></details>

# 必要なもの
- Mac
- eGPU
- **外部ディスプレイ (重要)**

eGPU を有効化させるためには外部ディスプレイが必須です。MacBook (ディスプレイ一体型の Mac) でも外部ディスプレイが必要です。理由はあとで説明します。

それから今回うまくいったのは、Mac mini ではなく MacBook Pro だったからできたのか、それとも 5 ヶ月経って OS やドライバがアップデートされたことで解決したのかが不明なため、あくまで MacBook Pro での成功例とします。Mac mini などの他の Mac での動作は保証しませんのであらかじめご了承ください。

# 事前準備
macOS の Boot Camp アシスタントを使って Mac に Windows 10 をインストールしてください。

なお、Windows 10 インストール後の作業はすべて Windows 10 で行います。macOS は必要ありません。

# 既存のディスプレイドライバの削除
すでにインストールされているディスプレイドライバを削除します。インストールしたてほやほやの Windows 10 で、まだ何もドライバ類を手動でインストールしていなかったとしても、Windows update で勝手にインストールされてしまっている可能性があるので、まず最初にディスプレイドライバをまっさらな状態にしておきましょう。

ディスプレイドライバを削除するために、DDU (Display Driver Uninstaller) というものを使用するのですが、これは今回使用するディスプレイドライバに付属しています。

[BootCampDrivers.com](https://www.bootcampdrivers.com) からディスプレイドライバをインストールします。

ページ左上あたりの "Downloads" から "Windows 10 ..." → "2020 drivers ..." と進み、"Adrenalin April 2020 Red Gaming edition (Best FPS in games)" を選択しダウンロードします。

<img width="1238" alt="bootcampdrivers_download_page.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/113895/7a7716bb-cf08-286d-3864-b968e71fb4c6.png">

MEGA のダウンロードページに飛び、ダウンロードボタンを押してしばらく待ちます。ダウンロードには時間がかかることがあります。ダウンロード中にサインアップを促されますが、別にサインアップしなくても問題ありません。しばらく待っていれば勝手にダウンロードが開始されます。

## セーフモードで起動する
ダウンロードが完了したら、セーフモードで再起動します。

画面左下の Windows ロゴをクリックし、電源ボタンをクリックします。**Shift キーを押しながら** 再起動ボタンをクリックして再起動します。
![スクリーンショット 2020-11-16 191651.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/113895/95b7b370-c9e6-7d3d-d410-55fb5b670ae5.png)

すると、「オプションの選択」という画面が表示されるので、その中の「トラブルシューティング」を選択します。
![IMG_7880.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/113895/53be6b35-927e-f296-6f46-ecde3eaf1435.jpeg)

「トラブルシューティング」の画面が表示されたら「詳細オプション」を選択します。
![IMG_7882.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/113895/7cce925f-e540-4686-6250-6d395d51de35.jpeg)

「詳細オプション」の画面が表示されたら「スタートアップ設定」を選択します。
![IMG_7885.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/113895/3ffe36c6-0d3c-6f65-c6c3-d7cd592db8c1.jpeg)

「スタートアップ設定」の画面が表示されたら、再起動ボタンをクリックします。
![IMG_7887.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/113895/626efd14-b1c1-9348-018e-39e879ba1319.jpeg)

その後しばらくすると先ほどとは別の「スタートアップ設定」の画面が表示されるので、キーボードの「**4**」を押します。
![IMG_7888.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/113895/10851bd6-85b5-16c6-dc87-db619a2bf4be.jpeg)

するとセーフモードで起動できます。デスクトップの壁紙が真っ黒で、画面の四隅に「セーフモード」と表示されていれば成功です。

## DDU の実行
先ほど、BootCampDrivers.com からダウンロードした ZIP ファイルを展開します。その中にある `DDU vX.X.X.X.exe` (`X.X.X.X` にはバージョンが入ります) を実行します。
![スクリーンショット 2020-11-16 205716.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/113895/e9da1e8e-11eb-a776-9687-bc8a12d9a36f.png)

すると拡張子 `.exe` を除いた同名のフォルダが生成されます。
![スクリーンショット 2020-11-16 205804.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/113895/0aeed224-8ff5-e5a7-2186-0df3c83c4b80.png)

その中の `Display Driver Uninstaller.exe` を実行します。
![スクリーンショット 2020-11-16 205839.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/113895/5e932c0b-1fd1-0b78-a05f-17ce496b4be3.png)

「最新版があります！」というメッセージが表示されたら「いいえ」を選択します。
![スクリーンショット 2020-11-16 210054.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/113895/eb08c454-ed9a-428c-8909-bc2417efa7f0.png)

「デバイスタイプの選択」という項目があるので、「GPU」を選択します。するとその下の項目が自動的に「AMD」に設定されるはずです。
![スクリーンショット 2020-11-16 210502.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/113895/adddd860-5de1-6082-f989-e484a4f6dfaa.png)

「GPU」と「AMD」が選択されていることを確認したら、「削除して再起動 (強く推奨します)」を選択します。
![スクリーンショット 2020-11-16 210527.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/113895/6b45a15c-b19e-d59b-8db6-f713ef2f17be.png)

なお、この作業はセーフモードではなくても実行できますが、セーフモードで実行することをおすすめします。

ディスプレイドライバが削除されるまでしばらく待ちます。削除が完了すると、自動的に Windows が再起動されます。再起動後はセーフモードではなく通常のモードで Windows が起動します。

# ディスプレイドライバのインストール
既存のディスプレイドライバが削除できたので、BootCampDrivers.com からダウンロードしたディスプレイドライバをインストールします。

BootCampDrivers.com からダウンロードして展開したフォルダ (先ほど使用した `DDU vX.X.X.X.exe` があるフォルダ) の中の `Setup.exe` を実行します。
![スクリーンショット 2020-11-16 211152.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/113895/f0fe56f3-2e43-768d-fe49-3b694e596a7c.png)

ディスプレイドライバのインストーラが起動するので、「工場リセット (推奨)」にチェックが入った状態で、インストールボタンをクリックします。「追加オプション」は特に何も変更しなくても OK です。
![スクリーンショット 2020-11-16 211344.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/113895/324c0c6a-367f-44d7-1b97-ea4dd9859ae3.png)

**インストール中は画面が真っ暗になったり解像度が変わったりと変な挙動をしますが気にせずそのまま待ちましょう**。

インストールが完了すると再起動ボタンが表示され再起動を求められますので再起動しましょう。

再起動してログインするとすぐに先ほどと同じインストーラが起動しますのでまた待ちます。そしてまた再起動を求められます。今回は再起動おボタンなどは表示されないので、手動で再起動します。

**画面がおかしくなりフリーズしたような状態になることがあります。まれにプログレスバーが満タンにならない状態で止まってしまうことがありますが、10 分以上待って何も変化がなければ完了していると思いますので再起動してしまいましょう**。

再起動後、デバイスマネージャーを起動し、「ディスプレイアダプター」の項目に GPU が表示されていればディスプレイドライバのインストールは成功です。
![スクリーンショット 2020-11-16 212234.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/113895/b629574c-d009-322b-4b9b-dbee6947fca1.png)

ちなみに上記スクリーンショットの `Radeon Pro 560X` は MacBook Pro に内蔵されている dGPU (Mac を購入する際のカスタマイズページの「グラフィックス」に該当するもの) で、`Radeon RX Vega` は eGPU です。どちらも使用する Mac や eGPU によって表記は変わります。たいてい Mac に搭載されている dGPU は `Radeon Pro ...` という名称です。

## 余談
BootCampDrivers.com は Mac 用の AMD グラフィックスドライバを提供するサイトですが、公式ではありません。

[公式の AMD のサイトからドライバをインストールすることも可能](https://www.amd.com/ja/support) ですが、Mac + eGPU の環境ではうまくいきません。

まず eGPU 用のドライバは、たとえ同じチップ用のドライバでもインストールすることができません。たとえば自分が使用している Blackmagic eGPU Pro は、Radeon RX Vega 56 というチップですが、[このチップ用のドライバ](https://www.amd.com/ja/support/graphics/radeon-rx-vega-series/radeon-rx-vega-series/radeon-rx-vega-56) をインストールしようとするとエラーになります。
![スクリーンショット 2020-11-15 164320.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/113895/8e86ef15-d0c9-b0ef-3ef3-91932f28476f.png)

それから、[Boot Camp 用の (つまり Mac 用の) AMD のグラフィックスドライバ](https://www.amd.com/ja/support/kb/release-notes/apple-boot-camp) も公式で用意されていますが、こちらはあくまで Mac に内蔵されている dGPU 用のものであり、eGPU に対しては適用されません。それに、BootCampDrivers.com のドライバを使用すれば、Mac に内蔵されている dGPU のドライバも一緒に適用されるため、わざわざ Boot Camp 用の公式のグラフィックスドライバをインストールする必要はありません。

# eGPU に外部ディスプレイをメインディスプレイとして接続する (重要)
**重要ということだけわかれば読み飛ばしてしまっても問題ありません。**

ここが今回ハマったポイントです。eGPU を認識してくれたところまでは良いのですが、使用するソフト (ゲーム) やそのときの状況によって、eGPU を使ってくれたり使ってくれなかったりする問題が発生しました。

自分の環境でいうと、Radeon RX Vega (eGPU 側) が認識されているのに全く使用されず、代わりに Radeon Pro 560X (Mac に内蔵の dGPU) が使用されていたり、両方使われているものの、eGPU 側は 30% ほどしか性能を出せていなかったりしました。もちろんゲームによっては 100% フルで使用しない軽いものもありますが、明らかにフレームレートが出ていないのに eGPU が全然使われなかったりちょっとしか使われなかったりするのは変です。

2 日くらいごにょごにょしていたら、解決方法がようやくわかりました。それは、**外部ディスプレイを eGPU 側に接続し、その外部ディスプレイをメインディスプレイに設定すること** です。それに気づくまでは Mac 側に外部ディスプレイを接続したり、外部ディスプレイを接続せずに MacBook Pro の内蔵ディスプレイだけで試したりしていました。

eGPU が性能をフルに発揮するのは、eGPU に接続されたディスプレイの画面に表示されたソフトであり、別のディスプレイに表示されているものは、どちらの GPU が使われるのか (Mac 内蔵の dGPU なのか、eGPU なのか、あるいは両方使われるのか) がわかりません。

同じソフト (ゲーム) でも、どちらが使われるのかがかなり曖昧でした。MacBook Pro と外部ディスプレイをつないだ状態で、FINAL FANTASY XV BENCHMARK を試してみたところ、eGPU がフルで使われることもあれば、全く使われないことや、30% くらいしか使われないこともあり、また、eGPU と外部ディスプレイをつないだ状態でも、ベンチマーク実行中に外部ディスプレイと MacBook Pro の内蔵ディスプレイ間でウィンドウを行き来すると、外部ディスプレイではスコアが高くなり (明らかに FPS が高くなる)、内蔵ディスプレイではスコアが低くなる (明らかに FPS が低くなる)、という現象が起きたり起きなかったりしました。

ただ確実なのは、eGPU 側に外部ディスプレイを接続した状態で、その外部ディスプレイをメインディスプレイに設定し、なおかつ起動するソフト (ゲーム) のウィンドウをその外部ディスプレイ側に表示すれば確実に eGPU を使ってくれるということです。

GPU が複数あると、どちらが使われるのかが非常に曖昧なため、eGPU をフルに使いたいときは必ず eGPU 側に外部ディスプレイを接続し、その外部ディスプレイをメインディスプレイに設定しましょう。Mac mini のように、内蔵ディスプレイが存在しない Mac でも、ディスプレイを Mac 側に接続すると eGPU を使ってくれない可能性があるので、eGPU 側に接続するようにしましょう。

また、eGPU 側に外部ディスプレイを接続してそれをメインディスプレイにしないと、VR ゲームはそもそも HMD に何も映像が映らなくなります。VR ゲームは、VR ヘッドセットに映像を送らないといけないので、eGPU で処理している映像を MacBook Pro に接続されているディスプレイや MacBook Pro の内蔵ディスプレイで表示しようとしても何も表示されませんし、逆に dGPU で処理している映像を eGPU に接続されているディスプレイで表示しようとしても同じです。

VR ゲームに限らず、Steam のゲームの場合、起動したときにフルスクリーンになると思いますが、フルスクリーンになるディスプレイは、メインディスプレイなので、このときにメインディスプレイが MacBook Pro の内蔵ディスプレイになっていたり、MacBook Pro に接続されたディスプレイだったりすると eGPU が使われたり使われなかったりするわけです。

というわけでかなり話が長くなってしまいましたが、外部ディスプレイを eGPU 側に接続し、そのディスプレイをメインディスプレイに設定する、ということはとても重要です。

そのため、MacBook Pro のような内蔵ディスプレイを持つ Mac であっても、eGPU をフルに活かす場合は外部ディスプレイが必要ということになります。というか VR をやるなら必須です。eGPU を使わずに (dGPU だけで) VR ゲームをやってみたりもしました (というか最初はこれに気づいてなくてそうなってしまっていた) が、全然体験が違います。dGPU だけだと 35 FPS くらいしか出なくてカクカクだったのが、eGPU を使うと 70 FPS くらい出てヌルヌルになりました。

## メインディスプレイの変更方法
さて、前置きが長くなってしまいましたが、メインディスプレイの変更方法についても紹介しておきます。

「Windows の設定」を開き、「システム」をクリックします。
![スクリーンショット 2020-11-16 222758.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/113895/8d5078ad-4e82-4944-c0bc-69f08c410a0a.png)

「ディスプレイ」の項目の「ディスプレイの配置を変更する」から eGPU に接続されている外部ディスプレイをクリックして青色にします。
![スクリーンショット 2020-11-16 222832.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/113895/ab08651e-7ccd-fe07-c9b1-6bdcb8579941.png)

上記のスクリーンショットでは、「1」が MacBook Pro の内蔵ディスプレイで、「2」が外部ディスプレイです。必ず「2」という数字になっているかどうかはわかりませんが、雰囲気でなんとなくわかると思います。

外部ディスプレイが選択され、青色の状態になったのを確認したら、そのまま下までスクロールし、「マルチディスプレイ」の「これをメインディスプレイにする」にチェックを入れます。
![スクリーンショット 2020-11-16 222902.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/113895/1576ab4a-02e9-f8a0-8254-a5b4c5f7472b.png)

すでにチェックが入っていたら外部ディスプレイがメインディスプレイになっているということなので特に何もしなくて OK です。もしミラーリングになっていた場合は、その上の「複数ディスプレイ」という項目を「表示画面を拡張する」に変更してください。

# おまけ (FF XV ベンチマーク結果)
スコアは Full HD 標準品質で 6,000 点台が多くて、たまに 7,000 点台になることもあります。一番良かったのが 7,117 点です。
![スクリーンショット 2020-11-16 155717.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/113895/1d63ba0f-ef20-8c4c-7dd6-110d5a9a2c0d.png)

Radeon RX Vega 56 ならもっと性能が出るはずですが、これが eGPU の限界でしょう (eGPU は dGPU に比べて、同じチップでもパフォーマンスが 20 ～ 30% ほど下がります)。ちなみにスコアは結構ばらつきます。約 6,000 点だったり約 7,000 点だったり。これも eGPU の弱点なのか、誤差の範囲内なのかはわかりませんが。

eGPU を認識してはいるものの、全く使っていない状態だとこんなスコアになります。Radeon RX Vega (56) という表記なのにこのスコアを出せるのはむしろレアなんじゃないかと思ってしまいます (画像の編集などは一切していません)。
![スクリーンショット 2020-11-16 110943.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/113895/1d2b3127-8b7d-0d28-3355-85b63cab824a.png)

eGPU を使ってはいるものの、フルに活用できていない場合はこんなスコアになります。eGPU に接続されていないディスプレイ (MacBook Pro の内蔵ディスプレイ含む) を使うとこのようになることもあります。
![コメント 2020-11-13 103233.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/113895/ec7c2355-73ac-33ce-a248-8774fb16baa3.png)

ちなみに eGPU の性能をフルに活かしきれていても、4K はさすがに厳しそうです。もっと良いチップを積んだ eGPU なら行けるかもしれませんが、そもそも eGPU は性能が出づらい上に、GeForce は Mac では動作が怪しいのでなかなか厳しそうです。
![スクリーンショット 2020-11-16 142914.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/113895/e0f261aa-7599-2803-1f9f-2d997b5a5399.png)

ちなみにベンチマークを回している間のタスクマネージャーはこんな感じ。ちゃんと eGPU をフルに使っていますね。もちろんゲームによっては 100% も使わないこともありますが、FF XV みたいに重いゲームは 100% 使います。
![スクリーンショット 2020-11-16 231009.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/113895/a87e5a8a-c055-0357-b8d9-ae1a35e420c4.png)

# 所感
Mac mini ではできなかったのか、それとも 5 ヶ月経って OS やドライバがアップデートされたことで解決したのかは結局わからずじまいですが、前回の敗北からリベンジすることができたので良かったです。

でも、やっぱり Mac + eGPU で Boot Camp するのは依然としておすすめしないです。うまくいったとはいえ、前回どうがんばってもうまくいかなかったことを考えると、逆に今回が偶然うまくいっただけの可能性もありますし、他の人の環境でも同様の手順でうまくいくとも限りません。

それにいくら性能の良い eGPU を用意してもパフォーマンスは 20 ～ 30% 程度落ちますし、コスパも悪すぎます。eGPU ありきの環境なので、「持ち運びできるゲーミング Mac」とも呼べないですし。

# 結論
やっぱり Windows PC は欲しい。