SVBus

UEFI Screen Resolution

This article is based on observations on screen resolution in WinPE. The test system included a Lenovo Thinkpad T470s with FHD resolution, with some tests also completed in VMWare Workstation Player. This system has UEFI firmware with CSM disabled. WinPE was based on boot.wim from Windows 21H2 installation media - modified using the Mini-WinFE project.

Screen resolution can be changed from a running WinPE booted on BIOS firmware. Changing the screen resolution on UEFI firmware is not so simple. Settings in unnatend.xml appear to be ignored and the screen resolution is fixed. Based on available information screen resolution appears to be set based on Graphics Output Protocal (GOP) mode. Once WinPE is booted, the resolution cannot be changed.

Investigating further, the screen resolution in WinPE is set to the resolution defined/set by the Windows Boot Manager. bcdedit.exe can be used to modify the BCD store and set the menu resolution that will subsequently by used in WinPE, however the graphicsresolution element does not support many options. Examples of resolutions that can be set using graphicsresolution include -

Attempting to use an unsupported resolution (unsupported by bcdedit.exe - not the hardware) resulted in the following output -

The highestmode option is also supported in bcdedit.exe. This option will enable boot applications to use the highest graphical mode detected by the firmware -

Exercise caution when using highestmode, as depending on the scale used by WinPE (see below), WinPE may be unusable on high resolution displays. As an example, running WinPE with 100% scaling on a Surface Pro with a screen size of 12.3" and maximum resolution of 2736 x 1824 was unreadable due to the content being hard to see and UI targets being difficult to select.

The GRUB4UEFI (aka Grub4dos-for_UEFI) boot manager can be used to set a wider range of screen resolutions before control is passed to the Windows Boot Manager. Setting the screen resolution in a GRUB4UEFI menu or at the commandline and then chainloading the Windows Boot Manager should keep the resolution set in GRUB4UEFI. NOTE that this may not work if the screen resolution is configured in the BCD store (e.g. graphicsresolution or highestmode is set) as these settings will override GRUB4UEFI.

To find supported resolutions, use the graphicsmode --info command on the GRUB4UEFI commandline. On the test system, the following resolutions are supported -

WinPE does not support resolutions lower than 768 vertical lines. This limits supported resolutions on the T470s test system to the following -

GRUB4UEFI configuration file (menu.lst) menu entries. Each entry uses the graphicsmode command to set a supported screen resolution prior to chainloading the Windows boot manager (/efi/microsoft/boot/bootmgfw.efi) -

The following screenshot was captured on a virtual machine, and shows the menu generated from the GRUB4UEFI configuration file (menu.lst) above -

Screenshots of the windows boot menu and running WinPE after selecting the corresponding option in the GRUB4UEFI boot menu (click on the thumbnail for the full image) -

Windows 1024x768 Windows 1280x1024 Windows 1980x1080

Overlay of the Windows boot menus for each corresponding screen resolution set/booted from the GRUB4UEFI menu -

Overlay of WinPE for each corresponding screen resolution set/booted from the GRUB4UEFI menu -

Document date - 12th April 2023