How to Enable GPU Passthrough on macOS Catalina VM on Proxmox

In my previous article, I have shown how to install macOS Catalina on Proxmox VE as a virtual machine. It is great to have the Mac running on my Proxmox VE. But, I have a major issue about the performance. Like any other Operating Systems, the virtual machine has a poor graphical performace. But don’t worry, in this section, you will see how to enable the GPU Passthrough on macOS Catalina on Proxmox.

Proxmox System Specification

  • AMD FX 8350 8 Core Processor
  • Gigabyte GA-970a-D3P motherboard
  • 16 GB DDR3 Memory
  • AMD Radeon RX-570 8 GB

The Benefit

By using GPU Passthrough feature in Proxmox, you can connect your monitor directly to the HDMI port on the graphic card in your Proxmox server. It will act as an ordinary monitor connected to a PC. And, if you have multiple GPU, you can connect to multiple monitors as well. Add mouse and keyboard, then enable the USB passthrough to assign the mouse and keyboard to the virtual machine.

By assigning a graphic card (PCI device) to a virtual machine, you will get the hardware acceleration enabled on the virtual machine. You can then use your virtual machine to play games, edit video, etc. Read more about GPU Passthrough on Proxmox.

unigine heaven performance on macOS catalina virtual machine
Unigine Heaven Benchmark Result on macOS Catalina virtual machine on Proxmox VE

How to use the dedicated graphic card to the macOS Virtual Machine on Proxmox (GPU Passthrough)

First, I assume you have successfully installed macOS Catalina on your Proxmox VE. If not, please visit this tutorial to install macOS Catalina on Proxmox VE. Also, you have to make sure that you have enabled the GPU Passthrough on your Proxmox server. I also have a quick guide on how to enable GPU Passthrough on Proxmox VE 6.2.

Next, make sure you have enabled the screen sharing feature on your macOS VM. We need this because after we enable the GPU Passthrough, we cannot connect through the Console menu on the Proxmox web dashboard. Another good thing to do is to use the static IP address on the macOS VM.

First, shut down or stop your macOS virtual machine. And then, from the Proxmox web dashboard, open the macOS VM settings. Click the Hardware section and click Add >> PCI Device. Select the VGA graphic card you want to use. Your graphic card should be listed there.

As you can see, my Radeon RX 570 is recognized as Ellesmere (Radeon RX 470/480). Enable the All Function, Primary GPU and PCI Express feature. Click OK.

Start the VM and then connect to the VM using VNC Viewer software from other computer. In some cases, you still able to use the Console on Proxmox dashboard. Or, connect a monitor to your graphic card directly. You should be able to use the external monitor directly to the macOS virtual machine since its not use the GPU Passthrough feature.

USB Passthrough

You can also enable the USB Passthrough for your USB keyboard and mouse.

Please note that the GPU Passthrough only available for one VM at a time.

Performance

Here are some screenshots showing the synthetic benchmark result using some software.

Unigine Heaven shows an impressive result. The total score 1763 and average FPS is 70.

Geekbench 5 Metal Score

As a comparison, you may take a look at my previous benchmark result of my macOS Catalina installed on AMD FX8350.

This is unbelievable. I only get 68.5 FPS on my AMD Ryzen + RX 580, and 59.7 FPS on AMD FX 8350 + RX 570. But I got 70 FPS on this Virtual machine. The benchmark uses Ultra quality and 1600 x 900 (full screen) on three systems.

That’s it. Now we have successfully enable the GPU Passthrough on macOS Catalina.

Bottom Line

macOS Catalina virtual machine on Proxmox VE with the GPU Passthrough enabled shows an impressive performance. The graphic acceleration is enabled, and 3D performance is also very good.

4 Comments

2 Trackbacks / Pingbacks

  1. macOS Big Sur Beta on Proxmox VE-Full acceleration support
  2. Deepin 20 - A Modern Linux Distribution | Manjaro dot site

Leave a Reply

Your email address will not be published.


*