Output Properties
TextRenderer
- Type:
plist string
- Failsafe:
BuiltinGraphics
- Description: Chooses renderer for text going through standard console output.
Currently two renderers are supported:
Builtin
andSystem
.System
renderer uses firmware services for text rendering.Builtin
bypassing firmware services and performs text rendering on its own. Different renderers support a different set of options. It is recommended to useBuiltin
renderer, as it supports HiDPI mode and uses full screen resolution. UEFI firmware typically supports ConsoleControl with two rendering modes: Graphics and Text. Some types of firmware do not support ConsoleControl and rendering modes. OpenCore and macOS expect text to only be shown in Graphics mode and graphics to be drawn in any mode. Since this is not required by UEFI specification, exact behaviour varies.Valid values are combinations of text renderer and rendering mode:
BuiltinGraphics
— Switch toGraphics
mode and useBuiltin
renderer with customConsoleControl
.BuiltinText
— Switch toText
mode and useBuiltin
renderer with customConsoleControl
.SystemGraphics
— Switch toGraphics
mode and useSystem
renderer with customConsoleControl
.SystemText
— Switch toText
mode and useSystem
renderer with customConsoleControl
.SystemGeneric
— UseSystem
renderer with systemConsoleControl
assuming it behaves correctly.
The use of
BuiltinGraphics
is straightforward. For most platforms, it is necessary to enableProvideConsoleGop
and setResolution
toMax
. TheBuiltinText
variant is an alternativeBuiltinGraphics
for some very old and defective laptop firmware, which can only draw inText
mode.The use of
System
protocols is more complicated. Typically, the preferred setting isSystemGraphics
orSystemText
. EnablingProvideConsoleGop
, settingResolution
toMax
, enablingReplaceTabWithSpace
is useful on almost all platforms.SanitiseClearScreen
,IgnoreTextInGraphics
, andClearScreenOnModeSwitch
are more specific, and their use depends on the firmware.Note: Some Macs, such as the
MacPro5,1
, may have incompatible console output when using modern GPUs, and thus onlyBuiltinGraphics
may work for them in such cases. NVIDIA GPUs may require additional firmware upgrades.- Type:
ConsoleMode
- Type:
plist string
- Failsafe: Empty (Maintain current console mode)
- Description: Sets console output mode as specified with the
WxH
(e.g.80x24
) formatted string.
Set to
Max
to attempt using the largest available console mode. This option is currently ignored as theBuiltin
text renderer only supports one console mode.Note: This field is best left empty on most types of firmware.
- Type:
Resolution
- Type:
plist string
- Failsafe: Empty (Maintain current screen resolution)
-
Description: Sets console output screen resolution.
- Set to
WxH@Bpp
(e.g.1920x1080@32
) orWxH
(e.g.1920x1080
) formatted string to request custom resolution from GOP if available. - Set to
Max
to attempt using the largest available screen resolution.
On HiDPI screens
APPLE_VENDOR_VARIABLE_GUID
UIScale
NVRAM variable may need to be set to02
to enable HiDPI scaling inBuiltin
text renderer, FileVault 2 UEFI password interface, and boot screen logo. Refer to the Recommended Variables section for details.Note: This will fail when console handle has no GOP protocol. When the firmware does not provide it, it can be added with
ProvideConsoleGop
set totrue
.- Type:
ForceResolution
- Type:
plist boolean
- Failsafe:
false
- Description: Forces
Resolution
to be set in cases where the desired resolution is not available by default, such as on legacy Intel GMA and first generation Intel HD Graphics (Ironlake/Arrandale). SettingResolution
toMax
will try to pull the largest available resolution from the connected display’s EDID.
Note: This option depends on the
OC_FORCE_RESOLUTION_PROTOCOL
protocol being present. This protocol is currently only supported byOpenDuetPkg
. TheOpenDuetPkg
implementation currently only supports Intel iGPUs.- Type:
ClearScreenOnModeSwitch
- Type:
plist boolean
- Failsafe:
false
- Description: Some types of firmware only clear part of the screen when switching from graphics to text mode, leaving a fragment of previously drawn images visible. This option fills the entire graphics screen with black colour before switching to text mode.
Note: This option only applies to
System
renderer.- Type:
DirectGopRendering
- Type:
plist boolean
- Failsafe:
false
- Description: Use builtin graphics output protocol renderer for console.
On certain firmware, such as on the
MacPro5,1
, this may provide better performance or fix rendering issues. However, this option is not recommended unless there is an obvious benefit as it may result in issues such as slower scrolling.This renderer fully supports
AppleEg2Info
protocol and will provide screen rotation for all EFI applications. In order to provide seamless rotation compatibility withEfiBoot
, builtinAppleFramebufferInfo
should also be used, i.e. it may need to be overridden on Mac EFI.- Type:
GopPassThrough
- Type:
plist string
- Failsafe:
Disabled
- Description: Provide GOP protocol instances on top of UGA protocol instances.
This option provides the GOP protocol via a UGA-based proxy for firmware that do not implement the protocol. The supported values for the option are as follows:
Enabled
— provide GOP for all UGA protocols.Apple
— provide GOP forAppleFramebufferInfo
-enabled protocols.Disabled
— do not provide GOP.
Note: This option requires ProvideConsoleGop to be enabled.
- Type:
IgnoreTextInGraphics
- Type:
plist boolean
- Failsafe:
false
- Description: Some types of firmware output text onscreen in both graphics and text mode. This is typically unexpected as random text may appear over graphical images and cause UI corruption. Setting this option to true will discard all text output when console control is in a different mode from
Text
.
Note: This option only applies to the
System
renderer.- Type:
ReplaceTabWithSpace
- Type:
plist boolean
- Failsafe: false
- Description: Some types of firmware do not print tab characters or everything that follows them, causing difficulties in using the UEFI Shell’s builtin text editor to edit property lists and other documents. This option makes the console output spaces instead of tabs.
Note: This option only applies to
System
renderer.- Type:
ProvideConsoleGop
- Type:
plist boolean
- Failsafe:
false
- Description: Ensure GOP (Graphics Output Protocol) on console handle. macOS bootloader requires GOP or UGA (for 10.4 EfiBoot) to be present on console handle, yet the exact location of the graphics protocol is not covered by the UEFI specification. This option will ensure GOP and UGA, if present, are available on the console handle.
Note: This option will also replace incompatible implementations of GOP on the console handle, as may be the case on the
MacPro5,1
when using modern GPUs.- Type:
ReconnectGraphicsOnConnect
- Type:
plist boolean
- Failsafe:
false
- Description: Reconnect all graphics drivers during driver connection.
On certain firmware, it may be desireable to use an alternative graphics driver, for example BiosVideo.efi, providing better screen resolution options on legacy machines, or a driver supporting
ForceResolution
. This option attempts to disconnect all currently connected graphics drivers before connecting newly loaded drivers.Note: This option requires
ConnectDrivers
to be enabled.- Type:
ReconnectOnResChange
- Type:
plist boolean
- Failsafe:
false
- Description: Reconnect console controllers after changing screen resolution.
On certain firmware, the controllers that produce the console protocols (simple text out) must be reconnected when the screen resolution is changed via GOP. Otherwise, they will not produce text based on the new resolution.
Note: On several boards this logic may result in black screen when launching OpenCore from Shell and thus it is optional. In versions prior to 0.5.2 this option was mandatory and not configurable. Please do not use this unless required.
- Type:
SanitiseClearScreen
- Type:
plist boolean
- Failsafe:
false
- Description: Some types of firmware reset screen resolutions to a failsafe value (such as
1024x768
) on the attempts to clear screen contents when large display (e.g. 2K or 4K) is used. This option attempts to apply a workaround.
Note: This option only applies to the
System
renderer. On all known affected systems,ConsoleMode
must be set to an empty string for this option to work.- Type:
UIScale
- Type:
plist integer
, 8 bit - Failsafe:
-1
- Description: User interface scaling factor.
Corresponds to
4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14:UIScale
variable.1
— 1x scaling, corresponds to normal displays.2
— 2x scaling, corresponds to HiDPI displays.-1
— leaves the current variable unchanged.0
— automatically chooses scaling based on the current resolution.
Note 1: Automatic scale factor detection works on the basis of total pixel area and may fail on small HiDPI displays, in which case the value may be manually managed using the NVRAM section.
Note 2: When switching from manually specified NVRAM variable to this preference an NVRAM reset may be needed.
- Type:
UgaPassThrough
- Type:
plist boolean
- Failsafe:
false
- Description: Provide UGA protocol instances on top of GOP protocol instances.
Some types of firmware do not implement the legacy UGA protocol but this may be required for screen output by older EFI applications such as EfiBoot from 10.4.
- Type: