Skip to content

XDR and HDR brightness upscaling

waydabber edited this page Mar 7, 2024 · 47 revisions

The XDR/HDR upscaling feature lets you to increase your display's brightness beyond the standard 100% limit (which corresponds to the maximum SDR - Standard Dynamic Range - brightness of your display).

Note

This article reflects app version v2.2.1

Warning

Features described in this entry require a Pro license.

Compatibility

The feature is compatible with the following Macs:

  • Works on Apple Silcion and Intel Macs, depending on the upscaling method used.
  • Any internal or external Apple XDR display (Pro Display XDR, built-in Retina XDR Display of new generation MacBook Pros)
  • Any HDR capable third party display in HDR mode

In case of third party HDR displays, at least a VESA DisplayHDR 600 or equivalent is recommended for meaningful results (works best on newer display techs - mini-LED etc).

What upscaling methods are available?

The app supports the following hardware and software assisted upscaling methods (in the order of superiority):

  • Hardware - native XDR brightness upscaling - works with built-in Apple XDR displays only (built-in), the external Pro XDR Display and third party HDR displays are not supported. Unlocks the entire brightness range with no strings attached - no clipped or overblown HDR videos, full native sliders compatibility, no extra CPU/GPU usage. Works on Apple Silicon. To activate the feature, select BetterDisplay XDR under the XDR Preset menu under the display's app menu block. Set up auto-activation for a particular display under Settings > Displays.
  • Software - color table XDR/HDR brightness upscaling - This method manipulates the display's color table (gamma table and EOTF - this affects how color component intensity levels are converted to optical information) in a way that normal desktop SDR content luminance values are extended beyond the SDR range, reaching into the HDR luminance range. Due to technical constraints this method causes clipped HDR content - HDR videos extending beyond SDR brightness levels will be capped at max SDR brightness. Works only on Apple Silicon Macs with any XDR or HDR display. Requires HDR to be enabled (on third party displays) and Color table adjustments option to be enabled under the display's settings.
  • Software - Metal XDR/HDR brightness upscaling - activated when native XDR or (the default) software upscaling methods are unavailable. Works on Apple Silicon and Intel with any HDR or XDR display. Might cause overblown HDR content (depending on the GPU used and desktop composition details). Requires HDR to be enabled (on third party displays) and Color table adjustments option to be disabled under the display's settings to work.

How to use XDR/HDR upscaling?

You can simply adjust the display brightness as usual - when the feature is properly configured, the brightness range should extend to the upscaled maximum brightness.

The brightness can be adjusted using the following methods:

  • Application brightness slider
  • Native Apple Keyboard brightness keys
  • Custom keyboard shortcuts

Important: to use the native Apple Keyboard brightness screens, you need to set up Accessibility permissions to the app under System Settings (this is not required when solely native XDR upscaling is configured and used).

How to enable software XDR/HDR upscaling?

If you are using an XDR or a third party HDR display in HDR mode, brightness upscaling is enabled by default on Apple Silicon Macs (via the color table method).

Note

If you are using an Intel Mac, you'll need to make some configuration changes to enable Metal upscaling. If you are using an XDR display, you might want to activate native XDR upscaling instead of the default upscaling. Read the details later on how to configure these!

If your third party (non-Apple) HDR display is not in HDR mode, you need to enable HDR by clicking the Enable HDR:

If the feature is properly accessible, you can simply use the keyboard brightness controls and the slider as usual - the brightness range is automatically extended. You can confirm this by having a visibly brighter display or (for software upscaling methods) by looking at the brightness percentage shown in the slider which should reach beyond 100% (for native XDR upscaling the scale maxes out at 100%):

Screenshot 2024-01-29 at 12 53 25 copy

Enabling/disabling hardware native XDR upscaling (Apple Silicon, requires Apple XDR display)

If the feature is generally available and enabled, you can activate native XDR upscaling from under the XDR display's XDR Presets menu by selecting the BetterDisplay XDR profile. This will reconfigure the display so native upscaling is enabled. You can then use the keyboard controls or the brightness slider to reach full peak brightness.

Screenshot 2024-01-31 at 12 44 29

You can generally enable/disable the feature under the XDR display's tab under Settings > Displays and configure auto-activation upon app startup and when the display is connected - so you don't have to manually select the BetterDisplay XDR profile.

Screenshot 2024-01-31 at 12 44 56

Under Native XDR brightness upscaling settings you can also adjust some more details - among these:

  • XDR brightness scale minimum - how dark the slider scale can make the screen. The default 1 already provides more dimming (almost to full black) than what's normally available but you can set it to 0 to allow full dimming.
  • XDR brightness scale maximum - maximum brightness. This is by default 1600 nits for XDR displays. You can set it to 1000 nits for a more conservative approach (this is the sustained full-white brightness level of XDR displays) or around 1300-1400 if you don't want the display to compensate and lower the brightness at the upper end of the scale when bright content is displayed.

Warning

The feature can be turned on for external Pro Display XDR screens (Apple Silicon, Intel), but this is experimental and might not work properly but cause a reconnect loop with such display. Proceed with caution!

Enabling/disabling software color table upscaling (Apple Silicon only)

You can manually enable/disable the feature (if available) under :gear (Settings) > Displays:

Screenshot 2024-01-31 at 13 10 56

Note: the setting is worded slightly differently for XDR and third party HDR displays.

Enabling/disabling software Metal upscaling (Apple Silicon, Intel)

In order to enable Metal upscaling, you need to simply disable color table adjustments and keep XDR or HDR brightness upscaling enabled.

Note

On Intel Macs you need to do this step in order to achieve upscaling for HDR displays (for XDR displays it is recommended to use native XDR upscaling instead).

Screenshot 2024-01-31 at 13 11 13

Software/hardware safety considerations

Software assisted XDR/HDR upscaling methods (color table, Metal) do not use any special hacks or undocumented APIs and does not circumvent protections (software or hardware) put into place by Apple to protect the display against any kind of damage (head, over-voltage etc). In XDR upscale mode, the app simply presents the screen as a bright HDR image which in compliance with how the display is supposed to operate while presenting a HDR content.

Warning

Unlike software XDR upscaling methods, the native XDR upscaling uses special hacks and undocumented APIs to achieve the upscaling effect - but still does not circumvent hardware protections put in place by Apple.

Apple's displays are built with proper protections/tolerances and they are designed to withstand even direct exposure to sunlight. At the same time it's a fact that LEDs have finite lifespans (normally measured in many years) and the brighter they shine, the shorter they last. Using brightness upscaling can therefore theoretically shorten the lifespan of the display and the elevated sustained heat outputs from the LED array might cause additional wear the LCD layer as well. There are no definitive experience on how all this affects XDR displays on the long run but the current thought is that no issues should emerge in the typical lifespan of the device (until it can be considered obsolete). Use the feature with all this in mind.

Battery impact

The XDR upscaling feature has an impact on battery life - for a small amount of perceived brightness increase more and more extra juice is needed as brightness goes up. This is not an issue when the system is connected to a power source, however when on Battery, please keep in mind that using the feature will draw more power than usual, so use the feature accordingly. This is (probably) the main reason why Apple does not allow the XDR screen's brightness to set beyond 500 (or 600, depending on model) nits as a standard macOS feature.

Troubleshooting

If the feature is not working as expected, there are some things to check.

What to check if XDR/HDR upscaling does not work

  • XDR/HDR upscaling requires Pro. If Pro is not activated and the trial period is over, upscaling will stop working.
  • The feature is compatible with Apple Silicon Macs only when the color table method is being used. If you are using an Intel Mac, please choose a different method!
  • Not all Apple made displays support upscaling - you need an Apple XDR display (built-in or external). Studio Display is not compatible.
  • Third party HDR displays must be in HDR mode for the feature to work.

Settings that must be enabled for the feature to be accessible

The following settings need to be enabled for the feature to work and be easily accessible:

  • The feature must be enabled (this is the default setting) for it to work.
  • For software upscaling to be easily accessible when any form of hardware brightness control is available (DDC or Apple), Combined brightness should be enabled under the display in Settings > Displays (this is the default setting). Without this you need to use the brightness slider under Image Adjustment to adjust upscaling.
  • For the software upscaling methods to work, software-based video adjustments must be enabled (these are all enabled by default).

Why Brightness seems to actually decreasing on XDR displays at the upper end of the brightness scale when upscaling is in effect?

The XDR display has a peak (1600 nits - available for shorter periods of time and for a smaller area of the screen) and sustained brightness level (1000 nits - available for an all-bright display). By default upscaling settings unlock brightness levels all the way up to 1600 nits, however when the screen is displaying a bright image (mostly white contents, bright wallpaper, light themed GUI etc.), the display hardware will decrease the overall backlight power to remain in the screen's specified thermal and power constraints. You can compensate for this by limiting the native XDR upscaling feature's max XDR brightness level (to around 1300-1400 nits) under Native XDR brightness upscaling settings at the display's settings.

HDR upscaling calibration - advanced reading

The app tries to automatically calibrate HDR upscaling to match the peak HDR brightness levels reported by the system when software upscaling (color table or Metal) is being used. However this might not be accurate at all times. If you feel the app is not utilizing all the brightness headroom available with your display (or it is set to too much, messing with white saturation), you can manually calibrate the upscaling levels under Settings > Displays > Calibrate HDR upscaling.

Screenshot 2024-01-31 at 13 15 42

During calibration a slider and a control image appears which will help you in the calibration process - the goal of calibration is to maximize brightness while avoiding white saturation crush.

Screenshot 2024-01-31 at 13 16 21

For added accuracy, you can check your white saturation levels using relevant display test patterns.

Note

Calibration works for both color table and Metal based software upscaling. For native XDR displays you can alter the maximum brightness level under the display's Native XDR brightness upscaling settings section.

Dynamic calibration on Apple XDR displays for software upscaling methods

On XDR displays, although software upscaling calibration is available, it should not be used for the default XDR preset (can however be used for reference presets) - the reported brightness levels are always accurate and the app dynamically recalculates the possible upscaling levels based on the available upscaling brightness headroom (EDR headroom) whenever panel brightness is changed (in this regard BetterDisplay is superior to some other upscaling implementations out there which simply use a fixed upscaling setting).

Note

For native XDR upscaling, you can use advanced settings to change the dimming and upscaling levels (in nits).

The ambient light sensor and software XDR upscaling - advanced reading

The app automatically disables the built-in ambient light sensor while software XDR upscaling is actively used to prevent brightness to return to non-upscaled levels and re-enables it when the brightness is at or below 100% and the sensor was originally enabled.

Despite the above, it is best to generally disable the ambient light sensor when software XDR upscaling is used for Apple screens to avoid sudden CPU usage bumps on various unrelated applications every time the ambient light sensor changes brightness (it may do so constantly due to changing environmental factors, like moving clouds etc).

Note

Native XDR upscaling and auto brightness work together fine.

Technical details: when XDR upscaling is enabled, the app puts the display into Enhanced Dynamic Range - EDR - mode. This is normal and it happens every time a HDR content is rendered on an Apple display. However macOS has a unique feature - in EDR mode the OS sends notifications to all running applications that can potentially present HDR content on screen (Safari, etc) every time the XDR display's brightness level changes. The goal of the notification is to ask every app to update the tone-mapping of all on-screen content (a brightness level change modifies the current maximum SDR luminance, thus changing the amount of extra brightness headroom available for any HDR content to present beyond the maximum SDR brightness - the headroom is the luminance range between the current maximum SDR brightness - determined by the display brightness setting, usually 500 nits max - and the peak brightness of the display - typically 1600 nits max for the Liquid Retina XDR display). This however is a resource-intensive process, so these notifications tend to cause CPU spikes for all affected apps. This is why it is generally best to disable the ambient light sensor (which generates a lot of these notifications by frequently tinkering brightness just a little bit) when consuming HDR content or when XDR upscaling is enabled.

Continuous XDR upscaling readiness

BetterDisplay allows you to disable EDR mode (explained above) even when software XDR upscaling is enabled. For this you need to uncheck Enable Continuous XDR upscaling readiness under Settings > Advanced. This will make transition to upscaled brightness somewhat slow and choppy as the display needs to be put to EDR mode all the time and the brightness headroom must ramp-up properly for the upscaling feature to work with its full potential.

Screenshot 2024-01-29 at 13 38 57

Upscaling and brightness control methods

The app offers multiple brightness control methods.

  • Software - color table manipulation - provides software XDR/HDR upscaling on Apple Silicon Macs.
  • Software - overlay dimming (with or without Metal) - this is used when color table manipulation is disabled. Provides software XDR/HDR upscaling for both Apple Silicon and Intel Macs.
  • Hardware - Apple control (for Apple displays) - this is not required, but is compatible with software XDR upscaling methods and it is advised to have this turned on. For native XDR upscaling this is the control method used.
  • Hardware - DDC brightness control (for third-party displays) - most third party HDR displays do not support DDC brightness in HDR mode properly. So while HDR upscaling is compatible with DDC brightness control, by default the app disables DDC brightness in HDR mode.
  • Combined brightness control - when both hardware (Apple or DDC) and software brightness control is enabled, combined brightness control can be enabled as well (this is the default setting). With combined brightness control the app attempts to provide the widest range of brightness/dimming control form zero (full black) to the maximum upscaled brightness via a single slider and via keyboard control.

If both hardware and software brightness controls are enabled while combined brightness is disabled, the app in certain situations shows multiple brightness sliders (separately for hardware and for software) depending on how the sliders are set up - but generally hardware brightness control takes precedence and software control (and software upscaling level) can be accessed under Image Adjustments.

Note

The app indicates the current brightness control setting and brightness control/upscaling method by varying slider brightness icons and slider labels (if showing slider labels is enabled under Settings > Menu).

The brightness range (brightness percentage limits) change depending on the active brightness control method.

Color table based upscaling and on-screen HDR content - advanced reading

Due to technical reasons the color table based XDR/HDR upscaling method (or color table based dimming) when active, on-screen HDR content is clipped at max SDR brightness. Because of this, if you are watching HDR content, you should set the display's brightness in a way that upscaling (and dimming) does not take effect.

Note

Native XDR or Metal upscaling methods do not cause HDR clipping (however Metal can cause overblown HDR videos on some platforms).

This is not a serious limitation as watching HDR content makes sense only if the display's brightness is properly set up anyway. For external displays it is generally recommended to have the panel brightness at 100% (most displays do not allow changing brightness in HDR mode) and HDR upscaling off. For Apple XDR displays it is recommended to set the display brightness around 75%-100% (75% might produce better results as gives more dynamic range for HDR content, but 100% is fine, this will make the SDR range of the image appear brighter).

Making sure display shows unclipped HDR content when using the app brightness slider

The brightness slider clearly indicates when HDR content appears unclipped with the color table method. If the combined brightness slider is shown, the slider will snap to a "Min HW" and "Max HW" value - these represent the low and high boundaries of the slider that uses solely hardware brightness control - in this range HDR content shows unclipped:

Screenshot 2023-03-15 at 17 21 04 Screenshot 2023-03-15 at 17 20 49

When the software based slider is used, you need to set the brightness slider to the 100% Neutral position to enjoy proper HDR content:

Screenshot 2023-03-15 at 17 24 55

By default, on Apple XDR displays the app uses the combined slider for upscaling and HDR displays in HDR mode use a non-combined, software-only slider (as most third party HDR capable displays don't properly support DDC brightness in HDR mode - this can be overwritten however as some do provide proper support).

Making sure display shows unclipped HDR content when using keyboard control

When using keyboard controls, it might be difficult to discern whether the current brightness settings induce HDR clipping or not. To help with this, BetterDisplay has two features:

  • Intermediate keyboard/OSD step at neutral settings
  • Extra OSD icon for dimming and upscaling

These settings can be enabled/disabled under Settings > Advanced:

Screenshot 2024-01-31 at 13 26 58

Intermediate keyboard/OSD step at neutral settings

When HDR upscaling is enabled while hardware brightness control is disabled, the app uses a continuous brightness scale between zero and the calibrated max upscale value. Due to this the neutral setting (100% brightness, when on-screen HDR content is unclipped) might not fall to an OSD chiclet boundary which makes it attainable via the the shortcut keys. To fix this the an additional mid-chiclet step at 100% brightness is inserted when this option is enabled (this is the default).

Extra OSD icon for dimming and upscaling

With this setting enabled (by default it is disabled), the app briefly show an upward (XDR/HDR upscaling) or downward (software dimming) pointing chevron OSD icon when the brightness is adjusted via the keyboard for a display. When the chevron symbol is not shown, the brightness change does not cause HDR clipping (note: other color adjustments might still cause HDR content to clip). The feature is compatible with combined brightness control or colortable dimming with intermediate neutral OSD step enabled.

219006703-cb317d20-85b1-476a-a61d-d9801ed111f1

Other factors that clip HDR content at SDR levels

When the app restores neutral settings so HDR content is not clipped, there might be a very brief flash/flicker on screen especially in multi-monitor mode (it might affect all screens). Because of this, setting neutral can be turned off under Settings > Advanced. It is best to leave this setting as default, but if HDR accuracy is not a concern, it can be safely changed.

Screenshot 2024-01-31 at 13 30 16

Important note: HDR content is clipped when certain color adjustments are in place (sliders under app menu's Image Adjustments submenu) even when XDR/HDR upscaling is not utilized.

Clone this wiki locally