VMware Communities
JFITServices
Contributor
Contributor

Screen upscaling / interpolation in full-screen modes

Hi all,

 

I'm runnning VMWare Workstation 16.2.5 build-20904516 on Fedora 37 Workstation 64-bit and x11. Using a 4K display and multiple Windows guest systems which slow down extremely when I set them to dynamic resolution which has them use the native screen resolution or close to it (in windowed mode). If the guests use any resolution beyond 2560x1440, despite having the latest guest additions and drivers installed, their performance degrades extremely. So it's not an option to have the guests run in 4K but using 200% enlargement of all screen items in the hosted Windows system's settings. My preferred solution is to have them run the highest resolution where performance is still tolerable, and let VMWare stretch the virtual displays to 4K so the entire screen is used and everything is well-readable thanks to the magnification from upscaling, thereby not using Windows scaling at all (i.e. keeping it at 100%)

This works perfectly as long as 3D acceleration is switched off! It will upscale the screen using something like a cubic algorithm. Everything looks smooth of course but it's preferable to the eye, compared to the nearest-neighbor upscaling that is used when the same VM is run with 3D acceleration on. See the examples. Both show a magnification of bottom-right screen corner (task bar).

  • 2016.png shows the ugly result of using 3D acceleration

    2016.png

  • 2016 no 3d accel.png shows the (optically) much better result without 3D acceleration

    2016 no 3d accel.png

There is one *huge* downside to this though. Disabled 3D acceleration causes Visual Studio (2019) and the CMD terminal to improperly refresh so changed areas are only repainted once the mouse hovers over them or a different window is moved across. That's a major annoyance. So I can now only choose between ugly but refreshing properly, or not so ugly and being an on-screen mess.

Maybe there is an option to configure the upscaling mode in 3D-accelerated VMs that I might have missed. Couldn't find anything in the preferences or the settings files though.

 

Cheers,

Joe

0 Kudos
5 Replies
banackmatt
VMware Employee
VMware Employee

Do you see the same "only repainted once the mouse hovers over them" behavior if you disable display scaling, and use the VM in a smaller window with 3D-acceleration disabled?

If you are seeing the corrupted display contents with 3D-acceleration disabled, and then you suspend + resume the VM, does it repair the contents?

Can you also post an example cropped screenshot showing this behavior for reference?

0 Kudos
JFITServices
Contributor
Contributor

Hi Matt,

 

well, there's no difference if the display is being scaled or not (for instance, in "center guest" mode). As long as I'm not using 3D acceleration, I'll have some funny artifacts. It's actually very easy to reproduce with CMD, and not quite so easy with Visual Studio but I think I have two images that illustrate the issue.

  • Desktop.png shows two CMD windows, the right one of which does a lenghty recursive directory listing and was moved while it does so. Sorry, had to obfuscate most of the desktop icons because it might be confidential. As you can see, the highlighted frame from moving the window (Windows is set to not move window contents immediately as windows get moved or resized) stayed painted even though the window was moved long before. The listing went on in that box with the highlighted border whereas the original window frame stayed where it is with the remaining content no longer changing, but actually it all shouldn't be where it is
  • vs2019.png shows the result of doing a mouse text selection between two lines. You can see from the vertical missing parts in the selection, that's where VS supports in highlighting braces and matching braces on the other end. This selection is actually still a selection from one point in code line 12 to another point in line 37 with everything covered in between but optically it's a total mess. It is much worse during typing but that's hard to illustrate in an image, and taking a screen capture might take it a bit too far now.

Not embedding the images here due to their size. Two more are attached which I'll refer to below.

I have not investigated much into what suspend and resume would do but honestly it would not be a preferable fix for me. Just gave it a try and the result after resuming is what you can find in the attachment vs2019 after resume.png. It looks different, and actually it is, using Ctrl-C and pasting the selected contents into Notepad proves that what was marked actually is only the bit that is shown highlighted. Nothing else is copied over to Notepad. If that helps anyhow.

This repainting issue is definitely gone while 3D acceleration is active. The only issue with that is that stretching the guest screen will cause very ugly artifacts particularly in fonts due to the harsh algorithm being used to stretch or pinch the display, especially the very thin fonts Microsoft picks in their more modern environments are getting barely readable, see SharePoint settings upscaled.png. This is the result of stretching a 2560x1440 guest screen to the 3840x2160 (4K) host display. Using "center guest" instead shows a pixel-perfect but very small guest display.

Again, I am totally sure this has nothing to do with the guest OS itself or any of its settings. Repainting issues might be more likely in Windows guests but I would not claim that other OSes are safe from it. Haven't come around to testing other guest OSes yet.

My summary is that when VMWare Workstation needs to scale a guest screen, the algorithms are different between accelerated and non-accelerated modes for whatever reason, and of all modes, the accelerated mode is the one that looks far worse when a low resolution is scaled up to a higher one.

 

 

Cheers,

Joe

0 Kudos
banackmatt
VMware Employee
VMware Employee

For the 3D accelerated case:

Is your host graphics card NVIDIA / Intel / AMD?  If you're running on NVIDIA, you can try running with GLRenderer which has a different scaling algorithm.  Set the following config setting in the VMX file (with the VM fully powered off).  (This won't work with a Intel/AMD host graphics card.)

mks.enableVulkanRenderer=FALSE

 

Can you also upload an mksSandbox.log?

0 Kudos
banackmatt
VMware Employee
VMware Employee

> Can you also upload an mksSandbox.log?

Actually, can you upload a vmware.log and mksSandbox.log, with and without 3D acceleration enabled?

 

It would also be interesting to know if you can see the graphical corruption with a Windows 10 or 11 guest.

0 Kudos
JFITServices
Contributor
Contributor

Dear Matt,

 

thanks for your advice. I need to take some time to create the logs and set up the VMs accordingly. What I can say for sure is that the host system uses an Intel i5 with integrated GPU, so there's neither nVidia nor AMD involved. And the scaling issue is happening with any Windows guest I have which is from 2003 Server R2 up to 2016 Server, and Windows 10. No Windows 11 yet but for me there's no reason to believe that it will be different there. I'm really sure that actually it wouldn't matter what OS the guest is running, it's purely a matter of the VMWare environment.

Will come back with some logs for you. Thanks a ton!

 

Cheers,

Joe

0 Kudos