From 27a9078c8c083d120d66124b91c6c7ecb51318a5 Mon Sep 17 00:00:00 2001 From: Inga Lovinde <52715130+inga-lovinde@users.noreply.github.com> Date: Mon, 17 Aug 2020 04:27:49 +0300 Subject: [PATCH] Preliminary support for virtio (KVM, QEMU), possibly solves #1, #4 --- README.md | 9 +++++---- RadeonResetBugFixService/Devices/KnownDevices.cs | 5 ++++- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index c8558c1..717ed15 100644 --- a/README.md +++ b/README.md @@ -12,13 +12,14 @@ You have attempted solving this by various fixes found in the internet (startup/shutdown scripts in group policies, etc), but did not find them reliable. And even then, after applying these fixes, -you find out that "Hyper-V Display" is now the primary display adapter, +you find out that virtual GPU is now the primary display adapter, GPU acceleration is unavailable, and the screen connected to Radeon GPU is treated as the secondary screen. ## Limitations -Currently this project only supports Hyper-V VMs, +Currently this project is only tested with Hyper-V VMs, +and probably also supports KVM and QEMU, but it should be trivial to add other hypervisors support (the relevant files are `Tasks\DisableVirtualVideoTask.cs` and `EnableVirtualVideoTask.cs`). @@ -120,14 +121,14 @@ and re-enable "basic video" system service automatic startup manually using `reg * Enable Radeon GPU -* Now that it's not the only GPU, disable Hyper-V GPU +* Now that it's not the only GPU, disable virtual GPU On service stop (pre-shutdown / shutdown): * Stop Windows Audio service (otherwise it won't let us disable Radeon devices) -* Enable Hyper-V GPU +* Enable virtual GPU * Now that it's not the only GPU, disable Radeon GPU diff --git a/RadeonResetBugFixService/Devices/KnownDevices.cs b/RadeonResetBugFixService/Devices/KnownDevices.cs index 20974b1..d96b05a 100644 --- a/RadeonResetBugFixService/Devices/KnownDevices.cs +++ b/RadeonResetBugFixService/Devices/KnownDevices.cs @@ -13,7 +13,10 @@ public static bool IsVirtualVideo(DeviceInfo device) { - return device.Service.Equals("hypervideo", StringComparison.OrdinalIgnoreCase); + return ( + device.Service.Equals("hypervideo", StringComparison.OrdinalIgnoreCase) || // Hyper-V video adapter + device.Service.Equals("qxldod", StringComparison.OrdinalIgnoreCase) // virtio/libvirt for Win8+ + ); } } }