GPU Partitioning on Windows 10 Pro (AMD Radeon 6900 XT)
Author: Jonathan Vasquez <jon@xyinn.org>
Last Updated: 2023-08-20-2300
fn main()
Hello everyone,
I've been loving my experience using my Windows 10 Dark Island strategy for gaming. However, I've been interested in seeing if I could share my AMD Radeon 6900 XT GPU with another identical Windows 10 Pro VM in Hyper-V, and if it went well, I could stream my Diablo II (1.05b and 1.09b) play sessions in the VM. Since I'm using my Dark Island approach, I can't stream from the main gaming OS since it's completely disconnected from the internet (hence the Dark Island). Unfortunately even though I got the GPU Partitioning strategy to work, this technology is highly experimental and there is a lot to be desired. So I won't be using it, and will continue to game offline on bare metal, so no streaming, I'll record any relevant game sessions (or relevant parts, mainly for Diablo II) and upload them to my channel later. Any future improvements to the technology wouldn't matter since Windows 10 is still the last Microsoft based OS that I'll be using personally due to the reasons I've mentioned in my Dark Island post. Regardless of this, I've collected a bunch of information and documented the steps to do it. A lot of this is really me just learning from what everyone else has already been saying regarding GPU Partitioning, so I'll be putting the source links for those locations. Please check out their videos and posts at the bottom of this post. I'm posting this in the hopes that there may be some pieces of knowledge that may help you along your own GPU Partitioning journey. You may end up having a better experience than me depending on your hardware and needs. Also, there are scripts out there that can automate most of this, but I wanted to see how to do it from scratch to see what's actually happening and to find out how easy this can be manually done. Before starting, I wanted to mention the games I tested to see if this worked on the AMD Radeon 6900 XT (the games basically seem to work if I passthrough the integrated card by leaving it enabled and letting Windows auto-select it. The performance is basically fine for basic games, but if it's something like Baldur's Gate 3, forget about it lol):
- Diablo II (Works. I'm using cnc-ddraw).
- Terraria (Works).
- Book of Demons (Works).
- Grim Dawn (Crashed at the main menu - for both 32 and 64 bit clients).
- Torchlight 1 (Crashed at start).
- Torchlight 2 (Crashed at start, after clicking the Play button (without mods)).
- Baldur's Gate 3 (Crashed when getting to the main menu. I can see the Larian Studio's Logo and NVIDIA screen).
Caveats
- You should use the exact same version and build of Windows 10 on both your host and guest to minimize issues.
- This solution is highly unstable and the technology is experimental. You may experience random crashes in your games, or many of your games may fail to start when launched. Only a few of the games I tested actually worked on my AMD Radeon 6900 XT. Funny thing is, the games actually worked when I passed through the integrated graphics.. but it's not as powerful so basically useless for my use case.
- I'll be mostly just talking about the AMD Radeon 6900 XT since that's what I have. You can find NVIDIA info all around the web.
- There won't be any sound by default. Alternative solutions exist that I haven't tried (like using some type of virtual audio cable).
- There will be latency when using the Hyper-V to view the VM. There are proprietary solutions that people are using such as Parsec to get high performance streaming via the RDP session to the VM. I haven't used it and can't use it anyways since my Dark Island has no internet for me to log into the Parsec servers.
- You should only try this with a single GPU on your machine, since Windows 10 Pro / Hyper-V doesn't allow you to select which GPU to use to partition and to assign to a VM.
- Resolution is capped at 1920x1080.
- FPS will be probably 30-60 FPS maximum. I'm not 100% sure of the numbers.
- If you update the GPU drivers on the host machine, you will need to re-copy all of those files into the guest VM as well or you will get a Code 43 error.
Requirements
You'll need to make sure that your BIOS has any appropriate VM related settings enabled. These may not all be necessary since I haven't spent time trying to reduce the setting set, but I've seen these mentioned by various folks throughout my research. I'll list them below. Don't forget that these instructions are tailored for AMD CPUs/GPUs. You'll need to find the equivalents on the Intel/NVIDIA side.
- Enable SVM.
- Enable SR-IOV.
- Enable IOMMU.
- Disable your integrated graphics if you can at the BIOS level and only use your dedicated card. If you can't disable it in the BIOS, then you can disable it in Window's Device Manager (
devmgmt.msc
).
Check if you have any GPUs to Partition
Before we continue any further, let's check to see if you have any GPUs to partition.
- Open PowerShell.
- Run
Get-VMPartitionableGpu
.
If you don't get any results, then you can't do this approach.
If you get 1 result then you can continue with the guide.
If you get more than 1 result, you should figure out how to turn off the extra GPU as mentioned earlier. You can see an example of this below since you can see I got both the integrated graphics, and the dedicated card both showing up. So which one is which?
Name : \\?\PCI#VEN_1002&DEV_164E&SUBSYS_88771043&REV_C1#4&1ebe6a9c&0&0041#{064092b3-625e-43bf-9eb5-d
c845897dd59}\GPUPARAV
ValidPartitionCounts : {32}
PartitionCount : 32
TotalVRAM : 1000000000
AvailableVRAM : 1000000000
MinPartitionVRAM : 0
MaxPartitionVRAM : 1000000000
OptimalPartitionVRAM : 1000000000
TotalEncode : 18446744073709551615
AvailableEncode : 18446744073709551615
MinPartitionEncode : 0
MaxPartitionEncode : 18446744073709551615
OptimalPartitionEncode : 18446744073709551615
TotalDecode : 1000000000
AvailableDecode : 1000000000
MinPartitionDecode : 0
MaxPartitionDecode : 1000000000
OptimalPartitionDecode : 1000000000
TotalCompute : 1000000000
AvailableCompute : 1000000000
MinPartitionCompute : 0
MaxPartitionCompute : 1000000000
OptimalPartitionCompute : 1000000000
CimSession : CimSession: .
ComputerName : DESKTOP-JIH348J
IsDeleted : False
Name : \\?\PCI#VEN_1002&DEV_73AF&SUBSYS_04FE1043&REV_C0#6&3963d419&0&00000009#{064092b3-625e-43bf-9e
b5-dc845897dd59}\GPUPARAV
ValidPartitionCounts : {32}
PartitionCount : 32
TotalVRAM : 1000000000
AvailableVRAM : 1000000000
MinPartitionVRAM : 0
MaxPartitionVRAM : 1000000000
OptimalPartitionVRAM : 1000000000
TotalEncode : 18446744073709551615
AvailableEncode : 18446744073709551615
MinPartitionEncode : 0
MaxPartitionEncode : 18446744073709551615
OptimalPartitionEncode : 18446744073709551615
TotalDecode : 1000000000
AvailableDecode : 1000000000
MinPartitionDecode : 0
MaxPartitionDecode : 1000000000
OptimalPartitionDecode : 1000000000
TotalCompute : 1000000000
AvailableCompute : 1000000000
MinPartitionCompute : 0
MaxPartitionCompute : 1000000000
OptimalPartitionCompute : 1000000000
CimSession : CimSession: .
ComputerName : DESKTOP-JIH348J
IsDeleted : False
- Open "Device Manager" by going to Start -> Run ->
devmgmt.msc
- Expand "Display adapters"
- Right click your GPU and click "Properties".
- Click "Details" and select "Device instance path" from the dropdown.
Compare that value with the name listed above until you find your card.
Since my monitor is connected directly to the dedicated card, I can disable it as follows (I already disabled it in my BIOS though so I'll only get one).
- Click start -> run ->
devmgmt.msc
. - "Display adapters" -> Right click your integrated card (in my case it was the
AMD Radeon(TM) Graphics
) and "Disable device". Confirm any messages.
Re-running the command above now shows the following:
Name : \\?\PCI#VEN_1002&DEV_73AF&SUBSYS_04FE1043&REV_C0#6&3963d419&0&00000009#{064092b3-625e-43bf-9e
b5-dc845897dd59}\GPUPARAV
ValidPartitionCounts : {32}
PartitionCount : 32
TotalVRAM : 1000000000
AvailableVRAM : 1000000000
MinPartitionVRAM : 0
MaxPartitionVRAM : 1000000000
OptimalPartitionVRAM : 1000000000
TotalEncode : 18446744073709551615
AvailableEncode : 18446744073709551615
MinPartitionEncode : 0
MaxPartitionEncode : 18446744073709551615
OptimalPartitionEncode : 18446744073709551615
TotalDecode : 1000000000
AvailableDecode : 1000000000
MinPartitionDecode : 0
MaxPartitionDecode : 1000000000
OptimalPartitionDecode : 1000000000
TotalCompute : 1000000000
AvailableCompute : 1000000000
MinPartitionCompute : 0
MaxPartitionCompute : 1000000000
OptimalPartitionCompute : 1000000000
CimSession : CimSession: .
ComputerName : DESKTOP-JIH348J
IsDeleted : False
Perfect :).
Installing / Enabling Hyper-V
We first need to install Hyper-V. I've confirmed that Hyper-V can be installed/enabled in Windows 10 Pro without an internet connection. So you can try to do this right after you finish my Dark Island strategy if you are following that approach.
- Search for "Turn Windows features on and off" in the search and open it.
- Check "Hyper-V". Click Ok, and reboot your computer.
Hyper-V should now be installed.
Creating the Hyper-V VM
Now it's time to create the VM.
- Open Hyper-V Manager.
- Allow the VM to have internet:
- Right click the machine under "Hyper-V Manager", and click "Virtual Switch Manager"
- Click "New virtual network switch"
- External
- Click "Create Virtual Switch"
- Name the switch "External"
- Select the external adapter you'll be using if you have multiple. If you have one, the default should be fine.
- Make sure "Allow management operating system to share this network adapter" is "enabled".
- Click "Apply", "Yes", and then "Ok".
- Right click your machine again under "Hyper-V Manager", and click "Hyper-V Settings"
- Click "Enhanced Session Mode" on the left.
- Uncheck "Use enhanced session mode"
- Click "Apply" and "Ok".
- Now create your VM on the left by right clicking your machine and selecting "New" -> "Virtual Machine".
Configure it as you wish and then click "Finish". When configuring pay attention to the following:
- Make sure that you select "Generation 2" when doing this or it won't work.
- Make sure to uncheck "Use Dynamic Memory for this virtual machine".
- Select your "External" switch when you get to your network configuration step.
- Select your Windows 10 ISO if you are installing from a bootable image file.
- Adjust the number of processors for your new VM.
- Right click your VM in the "Virtual Machines" section and click "Settings".
- Click "Processor" on the left and set the "Number of virtual processors" to what you want.
- Click "Checkpoints" on the left and uncheck "Enable checkpoints".
- Click "Apply" and then "Ok".
- Install Windows
- Double click the VM and click "Start".
- You'll need to press a key to boot from the image when it asks you to. It won't go into it automatically but rather it failed over to the "Start PXE over IPV4" mode and froze.
Partitioning the GPU
We first need to collect all the files that we want to use in the guest from the host. Make sure to update your graphic drivers to increase the probability of success (hopefully). Plus, it's annoying to update the files in the future so might as well do it once for now. To minimize the files we need to copy let's find out the files we need.
On the Host
Let's first create the following folders on your desktop with the following structure:
System32
System32\HostDriverStore
System32\HostDriverStore\FileRepository
SysWOW64
(This may not be necessary though).
These folders will all be copied into the C:\Windows
directory on the guest, later. The paths we care about will ultimately be:
C:\Windows\System32
C:\Windows\System32\DriverHost\FileRepository
C:\Windows\SysWOW64
Finding the driver files we need
- Open Device Manager.
- Click "Display adapters", right click your card (for me it's called
AMD Radeon RX 6900 XT
), and click "Properties". - Click the "Driver" tab and click "Driver Details".
These are all the files we need. We'll be placing them into specific folders in a little bit. Notice that all of the files are called something like C:\...
. If you scroll all the way to the bottom, you'll see some files that don't have a path starting with C:\
, these files will be located in the FileRepository
folder that we'll go to in a bit. These are the only files you need to copy from that location. It's not necessary to copy all of them. However, I've copied them all before and it didn't seem to cause an issue. In my case I only had one folder called u0394441.inf_amd64_57e767cb37419fb0
which is located in the FileRepository
folder. Any FileRepository
folders should be copied into the FileRepository
folder inside your HostDriverStore
directory.
Copying the driver files
Now let's copy all the files we saw above into the appropriate folder that we created earlier. This is how my file and folder hierarchy looked like after I copied them:
.
├── System32
│ ├── AMD
│ │ ├── amdfendr
│ │ │ ├── amdfendr.cat
│ │ │ ├── amdfendr.inf
│ │ │ ├── amdfendrmgr.sys
│ │ │ ├── amdfendrsr.ex_
│ │ │ └── amdfendr.sys
│ │ ├── amdkmpfd
│ │ │ ├── amdkmpfd.ctz
│ │ │ ├── amdkmpfd.itz
│ │ │ └── amdkmpfd.stz
│ │ ├── ANR
│ │ │ ├── AMDNoiseSuppression.exe
│ │ │ ├── anronnxlib.dll
│ │ │ ├── anrsvc.dll
│ │ │ ├── Default.anrcfg
│ │ │ ├── DirectML.dll
│ │ │ ├── onnxruntime.dll
│ │ │ ├── PMLN_model.onnx
│ │ │ ├── STLN_model.onnx
│ │ │ └── STLN_modelv2.onnx
│ │ ├── EeuDumps
│ │ │ ├── R-gpu-0-g6-c200-2023-7-23-15-18-50-172.log
│ │ │ ├── R-gpu-0-g6-c200-2023-7-23-16-19-54-203.log
│ │ │ ├── R-gpu-0-g6-c200-2023-7-25-10-31-13-964.log
│ │ │ ├── R-gpu-0-g6-c200-2023-7-25-12-0-15-687.log
│ │ │ ├── R-gpu-0-g6-c200-2023-8-20-16-5-14-402.log
│ │ │ ├── R-gpu-0-g6-c200-2023-8-20-16-9-28-994.log
│ │ │ ├── R-gpu-1-g6-c200-2023-7-22-22-58-42-369.log
│ │ │ ├── R-gpu-1-g6-c200-2023-7-23-15-38-7-858.log
│ │ │ ├── R-gpu-1-g6-c200-2023-7-23-16-24-14-764.log
│ │ │ ├── R-gpu-1-g6-c200-2023-7-25-10-31-13-964.log
│ │ │ ├── R-gpu-1-g6-c200-2023-7-25-12-0-15-687.log
│ │ │ ├── R-gpu-1-g6-c200-2023-8-18-22-13-11-388.log
│ │ │ ├── R-gpu-1-g6-c200-2023-8-18-22-38-30-263.log
│ │ │ └── R-gpu-1-g6-c200-2023-8-19-0-12-54-9.log
│ │ ├── MmdDumps
│ │ │ └── R-gpu-0-g4-c199-2023-8-18-21-8-43-398.log
│ │ ├── Persistent
│ │ └── Real
│ ├── amdadlx64.dll
│ ├── amdave64.dll
│ ├── amd_comgr.dll
│ ├── amdfendr.ctz
│ ├── amdfendr.itz
│ ├── amdfendrmgr.stz
│ ├── amdfendrsr.etz
│ ├── amdfendrsr.exe
│ ├── amdfendr.stz
│ ├── amdgfxinfo64.dll
│ ├── amdhip64.dll
│ ├── amdihk64.dll
│ ├── AMDKernelEvents.man
│ ├── amdlogum.exe
│ ├── amdlvr64.dll
│ ├── amdmiracast.dll
│ ├── amdmmcl6.dll
│ ├── amdmmcl.dll
│ ├── amdpcom64.dll
│ ├── amdsacli64.dll
│ ├── amdsasrv64.dll
│ ├── amdsmi.exe
│ ├── amdxc64.dll
│ ├── amdxc64.so
│ ├── amf-mft-mjpeg-decoder64.dll
│ ├── amfrt64.dll
│ ├── ati2erec.dll
│ ├── atiadlxx.dll
│ ├── atiapfxx.blb
│ ├── aticfx64.dll
│ ├── atidemgy.dll
│ ├── atidxx64.dll
│ ├── atieah64.exe
│ ├── atieclxx.exe
│ ├── atig6txx.dll
│ ├── atimpc64.dll
│ ├── atimuixx.dll
│ ├── atisamu64.dll
│ ├── atiumd6a.cap
│ ├── ativvsva.dat
│ ├── ativvsvl.dat
│ ├── detoured.dll
│ ├── EEURestart.exe
│ ├── GameManager64.dll
│ ├── hiprt0200064.dll
│ ├── hiprt02000_amd.hipfb
│ ├── hiprt02000_nv.fatbin
│ ├── HostDriverStore
│ │ └── FileRepository
│ │ └── u0394441.inf_amd64_57e767cb37419fb0
│ │ ├── B394106
│ │ │ ├── amdadlx32.dll
│ │ │ ├── amdadlx64.dll
│ │ │ ├── AMDav1Enc32.dll
│ │ │ ├── AMDav1Enc64.dll
│ │ │ ├── amdave32.dll
│ │ │ ├── amdave64.dll
│ │ │ ├── amde31a.dat
│ │ │ ├── amde34a.dat
│ │ │ ├── amde34b.dat
│ │ │ ├── amde40a.dat
│ │ │ ├── amdefctb.dat
│ │ │ ├── amdenc32.dll
│ │ │ ├── amdenc64.dll
│ │ │ ├── amdept.dat
│ │ │ ├── amdgfxinfo32.dll
│ │ │ ├── amdgfxinfo64.dll
│ │ │ ├── AMDh264Enc32.dll
│ │ │ ├── AMDh264Enc64.dll
│ │ │ ├── AMDh265Enc32.dll
│ │ │ ├── AMDh265Enc64.dll
│ │ │ ├── amdhdl32.dll
│ │ │ ├── amdhdl64.dll
│ │ │ ├── AMDhwDecoder_32.dll
│ │ │ ├── AMDhwDecoder_64.dll
│ │ │ ├── amdicdxx.dat
│ │ │ ├── amdihk32.dll
│ │ │ ├── amdihk64.dll
│ │ │ ├── AMDKernelEvents.mc
│ │ │ ├── amdkmdag.sys
│ │ │ ├── amdkmpfd.ctz
│ │ │ ├── amdkmpfd.itz
│ │ │ ├── amdkmpfd.stz
│ │ │ ├── amdlvr32.dll
│ │ │ ├── amdlvr64.dll
│ │ │ ├── amdmantle32.dll
│ │ │ ├── amdmantle64.dll
│ │ │ ├── amdmiracast.dll
│ │ │ ├── amdpcom32.dll
│ │ │ ├── amdpcom64.dll
│ │ │ ├── amdsacli32.dll
│ │ │ ├── amdsacli64.dll
│ │ │ ├── amdsasrv64.dll
│ │ │ ├── amdsmi.exe
│ │ │ ├── amduve32.dll
│ │ │ ├── amduve64.dll
│ │ │ ├── amdvlk32.dll
│ │ │ ├── amdvlk64.dll
│ │ │ ├── amd-vulkan32.json
│ │ │ ├── amd-vulkan64.json
│ │ │ ├── amdxc32.dll
│ │ │ ├── amdxc64.dll
│ │ │ ├── amdxc64.so
│ │ │ ├── amdxcstub32.dll
│ │ │ ├── amdxcstub64.dll
│ │ │ ├── amdxn32.dll
│ │ │ ├── amdxn64.dll
│ │ │ ├── amdxx32.dll
│ │ │ ├── amdxx64.dll
│ │ │ ├── amf-mft-mjpeg-decoder32.dll
│ │ │ ├── amf-mft-mjpeg-decoder64.dll
│ │ │ ├── amf-pa-ml32.dll
│ │ │ ├── amf-pa-ml64.dll
│ │ │ ├── amfrt32.dll
│ │ │ ├── amfrt64.dll
│ │ │ ├── amfrtdrv32.dll
│ │ │ ├── amfrtdrv64.dll
│ │ │ ├── ati2erec.dll
│ │ │ ├── atiadlxx.dll
│ │ │ ├── atiadlxy.dll
│ │ │ ├── atiapfxx.blb
│ │ │ ├── aticfx32.dll
│ │ │ ├── aticfx64.dll
│ │ │ ├── aticfxstub32.dll
│ │ │ ├── aticfxstub64.dll
│ │ │ ├── atidemgy.dll
│ │ │ ├── atidmcub_0.dat
│ │ │ ├── atidmcub_2.dat
│ │ │ ├── atidxx32.dll
│ │ │ ├── atidxx64.dll
│ │ │ ├── atidxxstub32.dll
│ │ │ ├── atidxxstub64.dll
│ │ │ ├── atieah32.exe
│ │ │ ├── atieah64.exe
│ │ │ ├── atieclxx.exe
│ │ │ ├── atiesrxx.exe
│ │ │ ├── atig6pxx.dll
│ │ │ ├── atig6txx.dll
│ │ │ ├── atigktxx.dll
│ │ │ ├── atiglpxx.dll
│ │ │ ├── atiicdxx.dat
│ │ │ ├── atimpc32.dll
│ │ │ ├── atimpc64.dll
│ │ │ ├── atimuixx.dll
│ │ │ ├── atio6axx.dll
│ │ │ ├── atioglxx.dll
│ │ │ ├── atisamu32.dll
│ │ │ ├── atisamu64.dll
│ │ │ ├── atiu9p64.dll
│ │ │ ├── atiu9pag.dll
│ │ │ ├── atiumd64.dll
│ │ │ ├── atiumd6a.cap
│ │ │ ├── atiumd6a.dll
│ │ │ ├── atiumdag.dll
│ │ │ ├── atiumdva.cap
│ │ │ ├── atiumdva.dll
│ │ │ ├── atiuxp64.dll
│ │ │ ├── atiuxpag.dll
│ │ │ ├── ativce02.dat
│ │ │ ├── ativce03.dat
│ │ │ ├── ativvaxy_cik.dat
│ │ │ ├── ativvaxy_cik_nd.dat
│ │ │ ├── ativvaxy_cz_nd.dat
│ │ │ ├── ativvaxy_el_nd.dat
│ │ │ ├── ativvaxy_FJ.dat
│ │ │ ├── ativvaxy_FJ_nd.dat
│ │ │ ├── ativvaxy_gl_nd.dat
│ │ │ ├── ativvaxy_nv.dat
│ │ │ ├── ativvaxy_rv.dat
│ │ │ ├── ativvaxy_stn_nd.dat
│ │ │ ├── ativvaxy_vcn3_1.dat
│ │ │ ├── ativvaxy_vcn3.dat
│ │ │ ├── ativvaxy_vcn4.dat
│ │ │ ├── ativvaxy_vg20.dat
│ │ │ ├── ativvaxy_vg20_nd.dat
│ │ │ ├── ativvaxy_vi.dat
│ │ │ ├── ativvaxy_vi_nd.dat
│ │ │ ├── ativvsva.dat
│ │ │ ├── ativvsvl.dat
│ │ │ ├── detoured32.dll
│ │ │ ├── detoured64.dll
│ │ │ ├── EEURestart.exe
│ │ │ ├── featuresync.dll
│ │ │ ├── GameManager32.dll
│ │ │ ├── GameManager64.dll
│ │ │ ├── H9_EASU_sx1_10_sy1_10.bin
│ │ │ ├── H9_EASU_sx1_20_sy1_20.bin
│ │ │ ├── H9_EASU_sx1_30_sy1_30.bin
│ │ │ ├── H9_EASU_sx1_40_sy1_40.bin
│ │ │ ├── H9_EASU_sx1_50_sy1_50.bin
│ │ │ ├── H9_EASU_sx1_60_sy1_60.bin
│ │ │ ├── H9_EASU_sx1_70_sy1_70.bin
│ │ │ ├── H9_EASU_sx1_80_sy1_80.bin
│ │ │ ├── H9_EASU_sx1_90_sy1_90.bin
│ │ │ ├── H9_EASU_sx2_00_sy2_00.bin
│ │ │ ├── hiprt0200064.dll
│ │ │ ├── hiprt02000_amd.hipfb
│ │ │ ├── hiprt02000_nv.fatbin
│ │ │ ├── kapp_ci.sbin
│ │ │ ├── kapp_si.sbin
│ │ │ ├── libamdenc64.so
│ │ │ ├── libsmi_guest.dll
│ │ │ ├── libsmi_host.dll
│ │ │ ├── mantle32.dll
│ │ │ ├── mantle64.dll
│ │ │ ├── mantleaxl32.dll
│ │ │ ├── mantleaxl64.dll
│ │ │ ├── oro_compiled_kernels.fatbin
│ │ │ ├── oro_compiled_kernels.hipfb
│ │ │ ├── samu_krnl_ci.sbin
│ │ │ ├── samu_krnl_isv_ci.sbin
│ │ │ ├── vulkan32.dll
│ │ │ ├── vulkan64.dll
│ │ │ ├── vulkaninfo32.exe
│ │ │ └── vulkaninfo64.exe
│ │ ├── u0394441.cat
│ │ └── U0394441.INF
│ ├── kapp_ci.sbin
│ ├── kapp_si.sbin
│ ├── mantle64.dll
│ ├── mantleaxl64.dll
│ ├── oro_compiled_kernels.fatbin
│ ├── oro_compiled_kernels.hipfb
│ ├── samu_krnl_ci.sbin
│ ├── samu_krnl_isv_ci.sbin
│ ├── vulkan-1-999-0-0-0.dll
│ ├── vulkan-1.dll
│ ├── vulkaninfo-1-999-0-0-0.exe
│ └── vulkaninfo.exe
└── SysWOW64
├── amdadlx32.dll
├── amdave32.dll
├── amd_comgr32.dll
├── amdgfxinfo32.dll
├── amdihk32.dll
├── amdlvr32.dll
├── amdpcom32.dll
├── amdsacli32.dll
├── amdxc32.dll
├── amf-mft-mjpeg-decoder32.dll
├── amfrt32.dll
├── atiadlxx.dll
├── atiadlxy.dll
├── atiapfxx.blb
├── aticfx32.dll
├── atidxx32.dll
├── atieah32.exe
├── atigktxx.dll
├── atimpc32.dll
├── atisamu32.dll
├── atiumdva.cap
├── ativvsva.dat
├── ativvsvl.dat
├── detoured.dll
├── GameManager32.dll
├── mantle32.dll
├── mantleaxl32.dll
├── vulkan-1-999-0-0-0.dll
├── vulkan-1.dll
├── vulkaninfo-1-999-0-0-0.exe
└── vulkaninfo.exe
14 directories, 288 files
After that we need to get those folders into the VM. I'll be using my LAN network to do it. Once you've copied those files over to your guest (I will assume you've placed the folders in your guest's Desktop), you can continue.
On the Guest
- Go to
C:\Windows
- Copy all the files in your Desktop's
System32
folder toC:\Windows\System32
. - Copy all the files in your Desktop's
SysWOW64
folder toC:\Windows\SysWOW64
. - Copy the
HostDriverStore
folder on your Desktop toC:\Windows\System32
. - Shutdown the VM.
On the Host
-
Open
PowerShell ISE
as Administrator. -
If you don't see the white script editor on the top, them you need to click the little circular down arrow at the top right of the center panel, you should see a
Script
label next to the circular arrow. -
Enable your system to run powershell scripts by typing the following in the command window (the dark blue window), not the script window (white window):
Set-ExecutionPolicy Unrestricted
, and clickYes to all
. -
Paste the following into the script box.
$vm = "gaming" Remove-VMGpuPartitionAdapter -VMName $vm Add-VMGpuPartitionAdapter -VMName $vm Set-VMGpuPartitionAdapter -VMName $vm -MinPartitionVRAM 80000000 -MaxPartitionVRAM 100000000 -OptimalPartitionVRAM 100000000 -MinPartitionEncode 80000000 -MaxPartitionEncode 100000000 -OptimalPartitionEncode 100000000 -MinPartitionDecode 80000000 -MaxPartitionDecode 100000000 -OptimalPartitionDecode 100000000 -MinPartitionCompute 80000000 -MaxPartitionCompute 100000000 -OptimalPartitionCompute 100000000 Set-VM -GuestControlledCacheTypes $true -VMName $vm Set-VM -LowMemoryMappedIoSpace 1Gb -VMName $vm Set-VM –HighMemoryMappedIoSpace 32GB –VMName $vm
-
Rename the "gaming" value to what you called your VM.
-
Click the green play button at the top to run and you are done! Ignore any errors related to
Unable to find a Gpu partition adapter matching the given criteria
. This is expected if this is your first time running this script.
Now let's test:
- Boot up the VM.
- Open "Device Manager" (
devmgmt.msc
) - Click "Display adapters"
You should see your video card now available with no errors. If you do see a warning sign, it is most likely
Code43
which means there are some files missing. You'll need to find those and copy them into the VM like
we did earlier.