Skip to content
View in the app

A better way to browse. Learn more.

Unraid

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

GPU Passthrough - looks like it's working, but, it's not

Featured Replies

Running 6.9.2 -- AMD Ryzen 5900X, 128GB RAM, RX580, many drives.

 

The VM concept is a new one for me, but, I'm excited to see what I can do with it. 

 

I've created a new Win 10 Pro VM (XML below). Nutshell, 4 CPUs and the HT cores, 16GB Ram, Q35-5.1, OVMF

 

I started by using the VNC graphics card - everything worked fine (changed the resolution in RDC app to support fullscreen 3440x1440) and installed Adrenaline 22.4.2 . I've enabled passthrough of the RX 580 (and edited the XML to have the audio use the same bus (different function). Everything seems to be working fine, except I'm getting an error in Passmark when I try to run the 3D Mark test. The PassMark DirectX Testing Suite modal box says:: Invalid video mode. The resolution and color depth you have selected do not appear to be valid for hardware acceleration. {more of same} Error code D3DERR_INVALIDCALL.

 

It looks like it's working fine in the VM -- but, this error gives me pause. 

 

Thanks in advance.

 

-----

<?xml version='1.0' encoding='UTF-8'?>

<domain type='kvm'>

<name>Windows 10</name>

<uuid>ff717c28-cd8c-2b7f-c50c-ae2da2a2906a</uuid>

<description>UnraidWindows</description>

<metadata>

<vmtemplate xmlns="unraid" name="Windows 10" icon="windows.png" os="windows10"/>

</metadata>

<memory unit='KiB'>16777216</memory>

<currentMemory unit='KiB'>16777216</currentMemory>

<memoryBacking>

<nosharepages/>

</memoryBacking>

<vcpu placement='static'>8</vcpu>

<cputune>

<vcpupin vcpu='0' cpuset='5'/>

<vcpupin vcpu='1' cpuset='17'/>

<vcpupin vcpu='2' cpuset='7'/>

<vcpupin vcpu='3' cpuset='19'/>

<vcpupin vcpu='4' cpuset='9'/>

<vcpupin vcpu='5' cpuset='21'/>

<vcpupin vcpu='6' cpuset='11'/>

<vcpupin vcpu='7' cpuset='23'/>

</cputune>

<os>

<type arch='x86_64' machine='pc-q35-5.1'>hvm</type>

<loader readonly='yes' type='pflash'>/usr/share/qemu/ovmf-x64/OVMF_CODE-pure-efi.fd</loader>

<nvram>/etc/libvirt/qemu/nvram/ff717c28-cd8c-2b7f-c50c-ae2da2a2906a_VARS-pure-efi.fd</nvram>

</os>

<features>

<acpi/>

<apic/>

<hyperv>

<relaxed state='on'/>

<vapic state='on'/>

<spinlocks state='on' retries='8191'/>

<vendor_id state='on' value='none'/>

</hyperv>

</features>

<cpu mode='host-passthrough' check='none' migratable='on'>

<topology sockets='1' dies='1' cores='4' threads='2'/>

<cache mode='passthrough'/>

<feature policy='require' name='topoext'/>

</cpu>

<clock offset='localtime'>

<timer name='hypervclock' present='yes'/>

<timer name='hpet' present='no'/>

</clock>

<on_poweroff>destroy</on_poweroff>

<on_reboot>restart</on_reboot>

<on_crash>restart</on_crash>

<devices>

<emulator>/usr/local/sbin/qemu</emulator>

<disk type='file' device='disk'>

<driver name='qemu' type='raw' cache='writeback'/>

<source file='/mnt/user/domains/Windows 10/vdisk1.img'/>

<target dev='hdc' bus='virtio'/>

<boot order='1'/>

<address type='pci' domain='0x0000' bus='0x03' slot='0x00' function='0x0'/>

</disk>

<disk type='file' device='cdrom'>

<driver name='qemu' type='raw'/>

<source file='/mnt/user/isos/Windows/Windows 10 x64.iso'/>

<target dev='hda' bus='sata'/>

<readonly/>

<boot order='2'/>

<address type='drive' controller='0' bus='0' target='0' unit='0'/>

</disk>

<disk type='file' device='cdrom'>

<driver name='qemu' type='raw'/>

<source file='/mnt/user/isos/virtio-win-0.1.217.iso'/>

<target dev='hdb' bus='sata'/>

<readonly/>

<address type='drive' controller='0' bus='0' target='0' unit='1'/>

</disk>

<controller type='sata' index='0'>

<address type='pci' domain='0x0000' bus='0x00' slot='0x1f' function='0x2'/>

</controller>

<controller type='pci' index='0' model='pcie-root'/>

<controller type='pci' index='1' model='pcie-root-port'>

<model name='pcie-root-port'/>

<target chassis='1' port='0x10'/>

<address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0' multifunction='on'/>

</controller>

<controller type='pci' index='2' model='pcie-root-port'>

<model name='pcie-root-port'/>

<target chassis='2' port='0x11'/>

<address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x1'/>

</controller>

<controller type='pci' index='3' model='pcie-root-port'>

<model name='pcie-root-port'/>

<target chassis='3' port='0x12'/>

<address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x2'/>

</controller>

<controller type='pci' index='4' model='pcie-root-port'>

<model name='pcie-root-port'/>

<target chassis='4' port='0x13'/>

<address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x3'/>

</controller>

<controller type='pci' index='5' model='pcie-root-port'>

<model name='pcie-root-port'/>

<target chassis='5' port='0x14'/>

<address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x4'/>

</controller>

<controller type='virtio-serial' index='0'>

<address type='pci' domain='0x0000' bus='0x02' slot='0x00' function='0x0'/>

</controller>

<controller type='usb' index='0' model='ich9-ehci1'>

<address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x7'/>

</controller>

<controller type='usb' index='0' model='ich9-uhci1'>

<master startport='0'/>

<address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0' multifunction='on'/>

</controller>

<controller type='usb' index='0' model='ich9-uhci2'>

<master startport='2'/>

<address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x1'/>

</controller>

<controller type='usb' index='0' model='ich9-uhci3'>

<master startport='4'/>

<address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x2'/>

</controller>

<interface type='bridge'>

<mac address='52:54:00:1c:bf:c9'/>

<source bridge='br0'/>

<model type='virtio-net'/>

<address type='pci' domain='0x0000' bus='0x01' slot='0x00' function='0x0'/>

</interface>

<serial type='pty'>

<target type='isa-serial' port='0'>

<model name='isa-serial'/>

</target>

</serial>

<console type='pty'>

<target type='serial' port='0'/>

</console>

<channel type='unix'>

<target type='virtio' name='org.qemu.guest_agent.0'/>

<address type='virtio-serial' controller='0' bus='0' port='1'/>

</channel>

<input type='tablet' bus='usb'>

<address type='usb' bus='0' port='1'/>

</input>

<input type='mouse' bus='ps2'/>

<input type='keyboard' bus='ps2'/>

<hostdev mode='subsystem' type='pci' managed='yes'>

<driver name='vfio'/>

<source>

<address domain='0x0000' bus='0x2b' slot='0x00' function='0x0'/>

</source>

<address type='pci' domain='0x0000' bus='0x04' slot='0x00' function='0x0' multifunction='on'/>

</hostdev>

<hostdev mode='subsystem' type='pci' managed='yes'>

<driver name='vfio'/>

<source>

<address domain='0x0000' bus='0x2b' slot='0x00' function='0x1'/>

</source>

<address type='pci' domain='0x0000' bus='0x04' slot='0x00' function='0x1'/>

</hostdev>

<memballoon model='none'/>

</devices>

</domain>

 

Edited by Nomad32

Did you install the proprietary video drivers?

  • Author

Sorry - yes. I edited the original post to include this:

 

(changed the resolution in RDC app to support fullscreen 3440x1440) and installed Adrenaline 22.4.2

I think that rdp breaks Direct3d, I'm quite sure that if you run the test directly (without remote desktop) it will pass (maybe you also need to disable remote desktop at all).

If this is the case, nothing to worry about, passmark is running the test on the virtual adapter of rdp instead of the actual gpu.

Edited by ghost82

  • Author

 

 

How will I use RDC to play games that run on the desktop of the virtual machine, if remote desktop breaks Direct3d? I tried killing the RDP connection, while running the test, and it errored out at the same point in the test. 

 

Sorry if this is coming across as stupid - but, I'm bummed that I can't sort this in my head?

Sorry if I wasn't clear, I mean that this should be an issue with the passmark software and the way remote desktop works.

You will not have issue in playing games via rdp if the video accelaration runs on the gpu.

 

For the test, I meant to attach a monitor to the gpu, delete any video virtual adapter created by remote desktop and run the benchmark in this way if you want to be 100% sure that the issue is caused by rdp/passmark.

Edited by ghost82

  • Author

I edited the registry to change the setting stated. No change on the test (after a restart). 

 

Basically - you're saying that the graphics card should work for most things, but that the test is flawed? 

 

I'll go ahead and install a game in the VM and use the monitoring tools to see if it can prove it's working correctly.

12 minutes ago, Nomad32 said:

Basically - you're saying that the graphics card should work for most things, but that the test is flawed?

Yes, I think so.

  • Author

Perfect! Thank you! I was able to install Witcher 3 and play it for 30 seconds. The only video card in the VM is the AMD from the machine pass through (not one embedded in the processor) - so, I can confirm that it looks/plays pretty well. I was getting grainy images in remote desktop, so, I installed Parsec and so far, so good. I'll continue playing - but, thank you for talking me off the edge.

  • Author

Update!  I tried the test again, running in Parsec, and it completed just fine!

Edited by Nomad32

Great!Yes the test completes successfull because parsec is different than remote desktop; remote desktop is a protocol. I'm quite sure that the test will complete also with vnc server/client.

With remote desktop video accelaration runs on gpu and the video is rendered by the rdp driver, then the "rendered images of the desktop" are transmitted to the rdp client.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.