It is not surprising that many graphics APIs do not work in virtualization systems like VMware, VirtualBox, or Hyper-V because they emulate a poor video card to save hardware resources. This limitation is the reason why certain effects, such as window rounding, may be unavailable when using Windows 11 on a virtual machine.
These restrictions are primarily driven by the policies of video card manufacturers and virtualization system developers. NVidia, for example, recommends using specialized GRID K1 and K2 video cards for graphics computing virtualization, which are significantly more expensive than regular video cards. If NVidia were to enable the use of inexpensive video cards for virtual machines, it would potentially impact the demand for high-end ones.
Nevertheless, there are still options available. Hyper-V supports the forwarding of discrete graphics cards, unlike VMware and VirtualBox, although there are some limitations. In previous versions of Windows 10, RemoteFX technology was used for this purpose. However, in current builds of Windows 10 and Windows 11, RemoteFX is no longer functional, and third-party tools must be utilized to leverage the resources of a physical video card.
It is important to note that the solution presented below comes with certain limitations.
- This Hyper-V method requires Windows 10 20H1 and above.
- You must be using a second-gen virtual machine, its first generation is not supported.
- After the graphics card forwarding, conflicts are possible during the parallel operation of the VM and WSL.
- The checkpointing feature for the virtual machine will be disabled.
If the above conditions suit your case, follow the further instructions.
Forwarding physical graphics card to Hyper-V
- Make sure that the video card can be connected to Hyper-V , for which run PowerShell as an administrator and run the
Get-VMPartitionableGpu(for Windows 10) or
Get-VMHostPartitionableGpu(for Windows 11) command. You should see a list of video adapters and their properties.
- Download the archive with ready-made video card connection scripts from the developer page on GitHub. Here’s the direct link. Unzip it to a convenient location.
- Shut down your virtual machine if you have it running.
- Return to your PowerShell, and run these commands:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
- Use the
cdcommand to change the folder to the one with the unzipped GitHub scripts. From there, run the
Update-VMGpuPartitionDriver.ps1 -VMName "Your VM Name" -GPUName "AUTO"command. You need to replace “Your VM Name” with the name of your virtual machine.
If the command is executed successfully, you will observe graphic improvements, such as previously unavailable transparency effects in the virtual operating system.
Limitations of Graphics Card Forwarding
Do not assume that successfully forwarding a video card in Hyper-V will grant the virtual system full access to all graphics capabilities. Many of these capabilities will still remain unavailable, including graphics control panel tools (such as NVIDIA or AMD), GPU load statistics in Task Manager, and programs and functions that rely on Vulkan and other popular graphics APIs.