kPsychNeedHDRWindow – Created onscreen window shall be a HDR window.
It will cause the onscreen window to be marked as using a HDR display
mode. That means the windows display surface displays on a High dynamic
range display device, color values are floating point values, and the
values can and will lie outside the conventional unsigned normalized
unorm value range of 0.0 - 1.0. Colors are expressed in a unit suitable
for HDR display, e.g., multiples of 80 nits (defined as SDR intensity
range) or in nits. E.g., a color value of 1234 could mean a light
intensity of 1234 nits (candela per square-meter).
This will change a couple of default settings wrt. image precision, and
also map color values into the target HDR range of the window:
Screen(‘MakeTexture’) will create textures of 16 bpc half-float format
(aka fp16) by default if the ‘floatprecision’ flag is omitted, instead of
creating 8 bpc fixed point textures by default. This is because 8 bpc fixed
point with only 256 intensity levels is usually inadequate for precision
image display on a HDR display, and color values outside the unorm 0-1
range need to be represented if the unit of color is nits or 80x nits.
Image matrices of uint8 format get converted into fp16 format, applying a
suitable conversion factor from unorm to HDR.
The movie playback functions will try to decode SDR and HDR movies
into the suitable linear color space used for HDR display, so that they
display as intended by the movie creator.
More HDR specific processing/treatment may be implemented in the future.