VMWare 和 Hyper-V 支持 DPI 缩放吗?
随着高分屏的逐步普及,DPI 缩放已经成为常识。但是,在虚拟机(Guest machine)中运行的来宾操作系统(Guest OS)的 DPI 的缩放比例一般是 100%。这样,如果虚拟机在高分屏电脑上运行,来宾操作系统界面上的文字(还有应用程序的窗体)会不会太小?
谷月老师经过实测,结合自身经验,写了这篇博文,供读者参考。
主流的虚拟机软件 VMWare Workstation(以下简称 VMWare)和 Microsoft Hyper-V(以下简称Hyper-V),它们都支持缩放来宾操作系统(Guest OS)的 DPI,前提是来宾操作系统需要是 Windows 8 或更高版本。
但是,它们的缩放效果是不一样的。
- VMWare:字变大了,但是分辨率不变。
- Hyper-V:字变大了,分辨率同步变大。
举例 1:来宾操作系统是 Windows 10,虚拟机桌面分辨率是 1280 x 800;物理机(Host machine)的宿主操作系统(Host OS)是 Winndows 10,DPI 缩放比例是 150%,宿主机桌面分辨率是 1920 x 1080。
VMWare 默认不为来宾操作系统开启 DPI 缩放,需要手动开启。开启后,来宾操作系统与宿主操作系统的 DPI 缩放比例一致。VMWare 将这一机制称为 DPI 同步(DPI sync)。
运行 VMWare,为虚拟机开启 DPI 缩放后,虚拟机的桌面分辨率仍然是 1280 x 800(分辨率不变),但是来宾操作系统的 DPI 缩放变成了 125%(字变大了)。
为什么是 125%?因为 Windows 10 默认限制 1280 x 800 分辨率 DPI 缩放比例不超过 125%。
此外,运行 VMWare,如果不开启 DPI 缩放,虚拟机桌面分辨率仍然是 1280 x 800,DPI 缩放仍然是 100%。
举例 2:来宾操作系统是 Windows 10,虚拟机桌面分辨率是 1280 x 800;物理机(Host machine)的宿主操作系统(Host OS)是 Winndows 10,DPI 缩放比例是 200%,宿主机桌面分辨率是 2736 x 1824。
运行 Hyper-V 并启动虚拟机,Hyper-V 默认开启 DPI 缩放。虚拟机桌面在物理机屏幕上占了2560 x 1600 个像素,相当于纵横各放大了 200%,与物理机屏幕的 DPI 缩放倍数匹配,即“字变大了,分辨率同步变大”。但是,在虚拟机内部,来宾操作系统的 DPI 缩放比例仍然是 100%,显示分辨率仍然是 1280 x 800。
换句话说,Hyper-V 没有修改来宾操作系统的 DPI 缩放,而是简单粗暴地按照宿主操作系统的 DPI 缩放比例(200%),把来宾操作系统的桌面整体在物理机的屏幕上放大了四倍。
一句话:海克斯科技与狠活!微软牛逼,不怕吃显卡算力和显存。
此外,如果同一台电脑上的两块显示器的 DPI 缩放比例不一致(常见于笔记本电脑外接一块显示器),那么,VMWare 和 Hyper-V 都能自动调节来宾操作系统的 DPI 缩放比例,使之与虚拟机窗口所在的显示器保持匹配。
总结:
- VMWare 只放大文字,不放大虚拟机的分辨率,会让虚拟机窗口所显示的内容减少(虚拟机的逻辑分辨率下降),不如Hyper-V;
- Hyper-V 以整体放大的形式处理 DPI 缩放的问题,尽管不影响内容的展示,然而它需要显示器的尺寸较大、分辨率较高,也对显卡的算力和显存提出了更高的要求。
图片来源