Hi all,
I just upgraded to Workstation 16 from 12 (I know, I know...), am rebuilding several VMs, and have several questions to make sure I do this right. In one of the VM docs, it states that the hardware compatibility for a guest should never be increased unless the guest needs the additional features exposed by the increase. Does that mean that a given hardware compatibility (say, 10.x) is constant between Workstation versions (12 vs 16), and that an existing VMs built on 10.x in ver12 would see the exact same virtualizied hardware in ver16?
My searches have yielded no actionable results, but I am hoping that there is a table somewhere that cross-references hardware compatibility with the guest OS. In other words, something like this:
Guest OS | Recommended Hardware Compatibility Level |
Windows 98SE | 6.0 |
Windows XP | 10.0 |
Windows 7 | 12.0 |
Finally, I know that back in the day, if there were any significant hardware changes on a bare-metal install (say, of Windows 98), it was always best to reinstall the OS so that it will detect the new stuff and install the appropriate drivers and such. How much is that true for Guest OSes Windows XP and beyond? Can they dynamically adapt to hardware compatibility changes? Thanks!
Mongo
Such a table does not exist. I have reviewed my inventory over the years and tried the idea of using the virtual hardware level that was new when the operating system was new, but things are never really conclusive in that regard.
It really depends on what features of a virtual hardware compatibility you are looking for. For example, theoretically Windows 7 could still benefit from version 16.0/16.2 as it can support DX11/DX11.1. Or from version 14.0 for a virtual TPM to use BitLocker.
Virtual hardware version also has a difference in CPU instruction sets. For example, Haswell instruction come with version 11. Generally instruction sets don't need a reinstall and it just gets exposed to it (as can be seen in /proc/cpuinfo flags in a Linux system or hwinfo64 in Windows). But if an OS pre-dates the release of a CPU generation, quite unlikely the OS can take advantage of the new instructions. Applications inside a VM might still be able to take advantage (e.g. application level library such as math libraries or visual recognition libraries that makes use of AVX2). But if you are looking for more modern instructions in a VM it is quite unlikely you would be using an old OS though.
For VMs, generally there is no need to reinstall unless you are changing things such as a storage controller or firmware from BIOS to UEFI which will render the existing VM unbootable.
With games running on Windows (whether it is FPS, RPG, MMORPG, or some other types) the main issue would be the DirectX level. The SVGA 3D driver can be the same version but it is the virtual hardware compatibility that determines the DX level support but I suppose there has to be some minimum SVGA driver version for newer virtual hardware versions. So at the very least, a VMware Tools upgrade might be necessary with a virtual hardware upgrade. For XP VMs, the last VMware Tools (and thus corresponding last supported SVGA 3D driver version) is version 10.0.12. Windows 7 VMs would also require SHA-2 updates for newer versions of VMware Tools (I think from 11.2.x onwards).
version 12/14 supports DX10, OpenGL 3.3 core profile
version 15 supports DX10.1, OpenGL 3.3 core profile
version 16 supports DX11, OpenGL 4.1 core profile
Generally you can see the difference of the DX support in the Display tab of dxdiag in the Feature Levels. But if you need to check for specific graphics capabilities you can use utilities like DXCapsViewer (https://github.com/microsoft/DxCapsViewer) or OpenGL Extensions Viewer (https://www.realtech-vr.com/home/glview) for OpenGL capabilities.
One other thing is the Display Memory (VRAM) that gets reported in dxdiag or "Dedicated Video RAM" in display adapter properties. It might be tied to the guest OS type instead of virtual hardware version. I don't have a Windows 7 VM anymore, but I think it was reported at 128MB. But with Windows 10 VMs, it is at 4MB, for Linux VMs it is an even lower 1MB (from glxinfo). For some software (not just games) it seems to just check this dedicated video RAM value and would fail to launch as it complains the video RAM is too low.
BTW, 3D accelerated graphics appears to be broken for XP VMs on Linux hosts with Nvidia proprietary driver (boots up with a black screen or just have 4-bit colour). But using Vulkan renderer with nouveau driver for Nvidia GPU or using Vulkan with Intel integrated graphics (from Skylake onwards) seems to be OK for 3D graphics of XP VMs on Linux host.
Such a table does not exist. I have reviewed my inventory over the years and tried the idea of using the virtual hardware level that was new when the operating system was new, but things are never really conclusive in that regard.
It really depends on what features of a virtual hardware compatibility you are looking for. For example, theoretically Windows 7 could still benefit from version 16.0/16.2 as it can support DX11/DX11.1. Or from version 14.0 for a virtual TPM to use BitLocker.
Virtual hardware version also has a difference in CPU instruction sets. For example, Haswell instruction come with version 11. Generally instruction sets don't need a reinstall and it just gets exposed to it (as can be seen in /proc/cpuinfo flags in a Linux system or hwinfo64 in Windows). But if an OS pre-dates the release of a CPU generation, quite unlikely the OS can take advantage of the new instructions. Applications inside a VM might still be able to take advantage (e.g. application level library such as math libraries or visual recognition libraries that makes use of AVX2). But if you are looking for more modern instructions in a VM it is quite unlikely you would be using an old OS though.
For VMs, generally there is no need to reinstall unless you are changing things such as a storage controller or firmware from BIOS to UEFI which will render the existing VM unbootable.
Thanks for your answers! I am about as pedestrian a Workstation user as you will find, and if I can just use the VMs that I built through version 12, that's fantastic! One other question, from strictly a gaming perspective. I have many older games installed in the existing VMs, and many of them (including the ones using 3D) run better than a bare metal installation(go figure). Some of them have been fan-upgraded to use modern graphics capabilities, some features of which were not supported in Workstation 12. I was hoping that the virtualized graphics card was also upgraded since version 12, and may be able to support more. My research tells me that the virtualized graphics adapter itself (SVGA) is the same, but the enhancements are in the Guest Additions (so, by updating those, I should see more graphics options supported?). Am I all wet in this?
Mongo
With games running on Windows (whether it is FPS, RPG, MMORPG, or some other types) the main issue would be the DirectX level. The SVGA 3D driver can be the same version but it is the virtual hardware compatibility that determines the DX level support but I suppose there has to be some minimum SVGA driver version for newer virtual hardware versions. So at the very least, a VMware Tools upgrade might be necessary with a virtual hardware upgrade. For XP VMs, the last VMware Tools (and thus corresponding last supported SVGA 3D driver version) is version 10.0.12. Windows 7 VMs would also require SHA-2 updates for newer versions of VMware Tools (I think from 11.2.x onwards).
version 12/14 supports DX10, OpenGL 3.3 core profile
version 15 supports DX10.1, OpenGL 3.3 core profile
version 16 supports DX11, OpenGL 4.1 core profile
Generally you can see the difference of the DX support in the Display tab of dxdiag in the Feature Levels. But if you need to check for specific graphics capabilities you can use utilities like DXCapsViewer (https://github.com/microsoft/DxCapsViewer) or OpenGL Extensions Viewer (https://www.realtech-vr.com/home/glview) for OpenGL capabilities.
One other thing is the Display Memory (VRAM) that gets reported in dxdiag or "Dedicated Video RAM" in display adapter properties. It might be tied to the guest OS type instead of virtual hardware version. I don't have a Windows 7 VM anymore, but I think it was reported at 128MB. But with Windows 10 VMs, it is at 4MB, for Linux VMs it is an even lower 1MB (from glxinfo). For some software (not just games) it seems to just check this dedicated video RAM value and would fail to launch as it complains the video RAM is too low.
BTW, 3D accelerated graphics appears to be broken for XP VMs on Linux hosts with Nvidia proprietary driver (boots up with a black screen or just have 4-bit colour). But using Vulkan renderer with nouveau driver for Nvidia GPU or using Vulkan with Intel integrated graphics (from Skylake onwards) seems to be OK for 3D graphics of XP VMs on Linux host.
Thank you all for your expertise! Just to be on the safe side, I am gonna re-build each of my VMs paying much closer attention to each one's behavior relative to the hardware compatibility level. I know that my XP machine (built on ver 12.5.7) boots fine, and that the 3D games work as before, but then I have not upgraded the guest additions... so, well see...:)
Mongo