Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Windows 11 ARM 2D Graphics Acceleration not working (Virtio-GPU driver) #3293

Open
daniyalw opened this issue Nov 8, 2021 · 43 comments
Open
Labels
bug Something isn't working spice Spice/CocoaSpice related

Comments

@daniyalw
Copy link

daniyalw commented Nov 8, 2021

When I open an app in Windows 11, there is no rounded borders (they're square). I think Windows 11 has rounded corners, but I'm not sure whether this is UTM's fault or Windows 11. Why aren't the borders round? Is this UTM's fault or Windows 11's fault?

@daniyalw
Copy link
Author

daniyalw commented Nov 8, 2021

And I now know for sure that Windows 11 has round borders.

@conath
Copy link
Contributor

conath commented Nov 8, 2021

Windows 11 requires display drivers to be installed for the new visual effects like rounded window corners. Please install "SPICE Guest Tools and QEMU Drivers" from the Support page, then shut down your VM and change its graphics card to qxl-vga or virtio-gpu-pci.

@conath conath closed this as completed Nov 8, 2021
@daniyalw
Copy link
Author

daniyalw commented Nov 8, 2021

This doesn't work. It's stuck here
screenshot
:

@conath
Copy link
Contributor

conath commented Nov 8, 2021

You'll need to provide more information so I can understand what is going on. Please add debug log and steps you did to get to the screenshot.

@daniyalw
Copy link
Author

daniyalw commented Nov 8, 2021

Config:

  • CPU: Default
  • CPU cores: 3
  • QEMU Machine Properties: highmem=off,virtualization=on
  • Memory: 3GB
  • Arch: ARM64
  • System: QEMU 6.1
  • Graphics card: virtio-gpu-pci

Basically the same config, except for the graphics card.
debug.log

@utmapp utmapp deleted a comment from daniyalw Nov 8, 2021
@conath
Copy link
Contributor

conath commented Nov 8, 2021

Config looks good. What's supposed to happen with a virtio-gpu-pci + Windows guest is this: (VM start)

  1. EFI with UTM logo
  2. EFI has some text on it briefly
  3. "Display output is not active"
  4. Login screen appears

If this doesn't work, the drivers are not installed correctly.

@daniyalw
Copy link
Author

daniyalw commented Nov 8, 2021

K, so I'm back at the 'Display output is not active' part. How long is this supposed to last before the login screen?

@conath
Copy link
Contributor

conath commented Nov 8, 2021

It lasts as long as your VM takes to boot to the login screen - maybe five seconds on my machine. If it doesn't switch from that, the driver is not loading. You'll need to switch back to the previous graphics card you were using and re-install the driver.

@daniyalw
Copy link
Author

daniyalw commented Nov 8, 2021

I probably do need to reinstall the driver, since after one hour it's not loading.

@utmapp utmapp deleted a comment from daniyalw Nov 9, 2021
@daniyalw
Copy link
Author

daniyalw commented Nov 9, 2021

I'm still not getting the rounded corners.

@conath
Copy link
Contributor

conath commented Nov 11, 2021

I've tested this now with Windows 11 ARM as well and am also not seeing the rounded corners. I believe it is related to #3291 and it should work with x86 guest.

@conath conath reopened this Nov 11, 2021
@conath conath changed the title Windows 11 window borders Windows 11 ARM 2D Graphics Acceleration not working (Virtio-GPU driver) Nov 11, 2021
@conath conath added bug Something isn't working spice Spice/CocoaSpice related labels Nov 11, 2021
@conath
Copy link
Contributor

conath commented Nov 11, 2021

Here's what my dxdiag looks like when running Windows 11 ARM with the spice tools version 164.2.
Screen Shot 2021-11-11 at 11 13 39

It seems all the acceleration is enabled except "DirectX 12 Ultimate". Still, no rounded corners except the start menu.

@conath
Copy link
Contributor

conath commented Nov 11, 2021

I uninstalled & deleted the VirtIO driver using Device Manager and shut down the VM, changed from virtio-gpu-pci to virtio-ramfb and started the VM again. Now it uses "Microsoft Basic Display Driver" and has the same acceleration properties displayed in the dxdiag.
Screen Shot 2021-11-11 at 11 21 48

@daniyalw
Copy link
Author

Oh.

@daniyalw
Copy link
Author

I do know another thing: in Parallels (I tried the 14 days free), there were rounded corners for the apps.

@conath
Copy link
Contributor

conath commented Nov 12, 2021

@Daniyal-Warraich Parallels have their own closed source backend and both 2D and 3D graphics acceleration. UTM / QEMU on Mac doesn't have this (yet) in a way that works with Windows guests. We already have great 2D and 3D OpenGL acceleration available for Linux guests.

@conath
Copy link
Contributor

conath commented Nov 12, 2021

I've tested Windows 11 x64 now and it also has no rounded corners. Tested with virtio-vga, virtio-ramfb and virtio-gpu-pci display card options, with the spice-guest-tools-0.164.2.iso drivers.

When using anything but virtio-vga, resolution changes with window resize and manual both stop working. Possibly related to #3291 however the virtio-vga doesn't work with ARM guest.

@brunocastello
Copy link

I do know another thing: in Parallels (I tried the 14 days free), there were rounded corners for the apps.

a bit off topic I know, but: Have you tried VMWare Fusion Technology Preview? It's not officially supported, but it can run Windows 11 ARM64, even though it's without their tools. I wanted to know if the apps are running normally there, as opposed to QEMU & Parallels.

@daniyalw
Copy link
Author

@brunocastello don't you need to sign up for it, like give your home address and such?

@brunocastello
Copy link

brunocastello commented Nov 18, 2021

@brunocastello don't you need to sign up for it, like give your home address and such?

I did sign up, but I did not provide real data for my profile. Anyway, the Fusion Tech Preview (for M1) is free to try out. Before I moved to a M1 Mac, I was using a free VMware Fusion version on my Intel Mac, for which I also signed up.

@daniyalw
Copy link
Author

I'll do that (fake data).

@daniyalw
Copy link
Author

K so there is still no rounded borders on VMware Fusion Windows 11.

@brunocastello
Copy link

Well... are the native apps running as well? Calculator, Microsoft Store... ?

@daniyalw
Copy link
Author

Oh yeah, they are.

@brunocastello
Copy link

Do we have any development status of Windows 11 ARM side with UTM as of now?

Last time I tried, It did boot successfully, but I had no use for it because all the default apps (including Microsoft Store) were refusing to open and run. And then there is the rounded corners missing.

@brunocastello
Copy link

@Daniyal-Warraich which version of Windows 11 Pro you used for that?

@daniyalw
Copy link
Author

@brunocastello I don't actually remember, since I deleted the VM to save some space.

@sebdanielsson
Copy link

Sorry for hijacking this issue but is there an open issue where I can follow the progress on bringing DirectX accelerated graphics on Windows 10 or 11 when running on an arm64 host?

@brunocastello
Copy link

No, there is no way, nor any work to bring DirectX accelerated graphics to it being made. It is what it is. Sorry to put down your hopes for it.

Upstream QEMU (outside of UTM scope) needs to bring Virgl3D support for Windows (currently only Linux) and write windows drivers for it to happen. And AFAIK there is no work from them being made for it, or else I'd have read about it on phoronix or reddit.

@sebdanielsson
Copy link

No, there is no way, nor any work to bring DirectX accelerated graphics to it being made. It is what it is. Sorry to put down your hopes for it.

Upstream QEMU (outside of UTM scope) needs to bring Virgl3D support for Windows (currently only Linux) and write windows drivers for it to happen. And AFAIK there is no work from them being made for it, or else I'd have read about it on phoronix or reddit.

Thanks for your quick reply. Then it's UTM for Linux and Parallels for Windows I guess☺️

@brunocastello
Copy link

You can do both on Parallels, but Parallels is not cheap either. I am sticking with UTM for now, because my needs are different (I do not have any modern game that requires such power to play, like F1 2017 or NBA 2K22 for example).

Also, I have tried Parallels Desktop trial version + PD Runner and albeit I was able to run Windows 11 ARM in full glory, the workarounds provided by PD Runner weren't working THAT well, plus for the long run in future this solution may not be permanent (Parallels can close this loophole, for example). So I am sticking with the most sensible and legal option for now, UTM.

There's VMware Fusion for M1, but no Windows support at all, because Michael Roy thinks Parallels are sailing in a grey area with regards to Windows licenses (even though 11 ARM is still Insider Preview), and Microsoft has a "secret" deal with Qualcomm, for exclusive license of Windows 11 with their ARM processors - which is supposed to be set to expire soon, but I wouldn't hold any high hopes for Microsoft to support M1 with any Bootcamp version. The M1 performance is so good that letting it run Windows 11 ARM natively would TRASH completely their Surface devices.

Maybe Microsoft should just stick their business (and nose) with software only, instead of hardware, unlike Apple, who has the expertise to do both after several transitions...

@brunocastello
Copy link

I've found out that a Windows 11 Pro ARM64 VM on UTM and virtio-ramfb-gl (GPU Supported) can run a x86 game like Grand Prix 4, since dxdiag reports it has D3D and DDraw support (?!?!?!?!) after installing the SPICE Guest Tools. However, it's not 3D in full glory as one would expect, just a very basic one, 2D Graphics Acceleration.

I suspect it could play 20+ years old games from late 90's like the one I mentioned, 2D Graphics Accel is enough for them, but I faced one issue, the VM was crashing on me several times. I load the game, it asks for graphics calibration and it does, I can see the race in near full glory, pretty good race speed, but after calibration, back to the main menu, a few seconds later the machine just froze and rebooted. I am yet to try out Grand Prix 3 (older version) and dgVoodoo 2. I was really surprised to see that GP4 emulation under a W11 ARM64 VM in QEMU worked until that point.

I also suspected about something wrong with the emulation for GP4. Need to figure out what is happening and if there is any setting that I could configure to improve its emulation. But anyway, in a few occasions while using the system (not gaming) it also froze and rebooted. Most of the time I have a pretty stable system for long periods. Sometimes I don't.

The Microsoft Store is still auto updating itself every time I power on the machine, and I am forced to reinstall it when I want to use it.

@brunocastello
Copy link

Using the same VM, without dgvoodoo2 (not really needed for this game anyway), I was able to play a quickrace in a Grand Prix 4 vanilla state game. However, since I am using a M1 Air, as expected, the computer was too hot. I should have looked after a M1 Macbook Pro instead of a M1 MacBook Air. Well, it is what it is. But I have proof that Grand Prix 4 is playable.

Much of it is possible because of virtio-ramfb gpu emulated card, too bad we only have drivers for Windows 10+. I am wondering if we had the same drivers for at least Windows XP, then maybe the performance/thermals would be so much better.

@brunocastello
Copy link

Any news on the front regarding the lack of rounded corners on Windows 11?

@conath
Copy link
Contributor

conath commented Jan 8, 2022

Using the latest Windows SPICE guest tools version 0.164.3 that include updated graphics drivers (fixes resolution change and cursor) the window corners are still square.

UTM-Win11DXDIAG-spice-guest-tools-0 164 3

@brunocastello
Copy link

I found the solution

https://www.reddit.com/r/Windows11/comments/r87w6q/i_thought_windows_11_had_rounded_corners/hn43ww1/?utm_source=reddit&utm_medium=web2x&context=3

Either install graphic driver, or open registery editor and in the adress tab type Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Dwm and create a new dword (32 bit value) name it ForceEffectMode and set it to 2

The regedit hack after a reboot works and I now have rounded corners.

@conath
Copy link
Contributor

conath commented Jan 8, 2022

Neat, I can confirm that registry "hack" works. Just have to log out and log back in, no reboot necessary.

However I would call this a workaround and not an actual solution. We do have a graphics driver, but Windows seems to not like its driving style.

@brunocastello
Copy link

Going a bit off topic here...

Now UTM just needs (along with an ability to save the VMs to an external storage) a way to shrink machine size after its usage to keep them tidy, just like VMware does present that option in Machine configuration. This would be perfect; then I think that VMware would have (it already does have) a fine competitor here with UTM.

Basically you'd need to script something that would "convert" your current qcow2 image to a new qcow2 image, and this process actually does shrink a bit the machine. Say you used +6GB of your 15GB machine, but decided to delete these files, but how to claim the 6GB back?

I usually proceed to a command line qemu-img argument where I can "convert" the same image to another qcow2 image. This reduces somewhat the image size. And I can reclaim back nearly 6GB. However, this process does take some time (Well, VMware also does, even more on Linux distributions).

@brunocastello
Copy link

Neat, I can confirm that registry "hack" works. Just have to log out and log back in, no reboot necessary.

However I would call this a workaround and not an actual solution. We do have a graphics driver, but Windows seems to not like its driving style.

Yeah, its actually a workaround. I have just found it with a bit of googling. I couldnt believe how easy it was. Still, it's something that should be put forward to the devs of SPICE to find out how to make it happen natively instead of a registry hack.

@conath
Copy link
Contributor

conath commented Jan 8, 2022

Now UTM just needs (along with an ability to save the VMs to an external storage) a way to shrink machine size after its usage to keep them tidy, just like VMware does present that option in Machine configuration. This would be perfect; then I think that VMware would have (it already does have) a fine competitor here with UTM.

Basically you'd need to script something that would "convert" your current qcow2 image to a new qcow2 image, and this process actually does shrink a bit the machine. Say you used +6GB of your 15GB machine, but decided to delete these files, but how to claim the 6GB back?

I usually proceed to a command line qemu-img argument where I can "convert" the same image to another qcow2 image. This reduces somewhat the image size. And I can reclaim back nearly 6GB. However, this process does take some time (Well, VMware also does, even more on Linux distributions).

This is a great idea! I believe it is feasible to add this to UTM. Please open a new "feature request" issue describing how you would like the feature to work in UTM, including what you already wrote above.

@aisobe
Copy link

aisobe commented Jan 11, 2022

Why is WDDM 1.3? That is from Windows 8.

@bryantclcqq
Copy link

bryantclcqq commented Aug 27, 2022

Here's what my dxdiag looks like when running Windows 11 ARM with the spice tools version 164.2. Screen Shot 2021-11-11 at 11 13 39

It seems all the acceleration is enabled except "DirectX 12 Ultimate". Still, no rounded corners except the start menu.

Hi @conath, do you know what is difference between ARM64 virtio-gpu driver within spice tools and kvm guest drivers windows (https://github.com/virtio-win/kvm-guest-drivers-windows/tree/master/viogpu) ?
I could install and use virtio-gpu.sys successfully from spice tools. But I was failed to use which from kvm guest drivers windows, it would get BSOD (Blue Screen Of Deadth).
I ran Windows 11 for ARM (21H2) guset vm with qemu 7.0.0 + kvm.

@conath
Copy link
Contributor

conath commented Aug 27, 2022

@bryantclcqq AFAIK the KVM and SPICE "backends" are not compatible, so the KVM driver wouldn't work.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working spice Spice/CocoaSpice related
Projects
None yet
Development

No branches or pull requests

6 participants