diff --git a/include/SDL3/SDL_render.h b/include/SDL3/SDL_render.h index d45681b438..2d09319b3a 100644 --- a/include/SDL3/SDL_render.h +++ b/include/SDL3/SDL_render.h @@ -344,13 +344,13 @@ extern DECLSPEC int SDLCALL SDL_GetRendererInfo(SDL_Renderer *renderer, SDL_Rend * SDL_COLORSPACE_SRGB. * - `SDL_PROP_RENDERER_HDR_ENABLED_BOOLEAN`: true if the output colorspace is * SDL_COLORSPACE_SRGB_LINEAR and the renderer is showing on a display with - * HDR enabled. + * HDR enabled. This property can change dynamically when SDL_EVENT_DISPLAY_HDR_STATE_CHANGED is sent. * - `SDL_PROP_RENDERER_SDR_WHITE_POINT_FLOAT`: the value of SDR white in the * SDL_COLORSPACE_SRGB_LINEAR colorspace. When HDR is enabled, this value is - * automatically multiplied into the color scale. + * automatically multiplied into the color scale. This property can change dynamically when SDL_EVENT_DISPLAY_HDR_STATE_CHANGED is sent. * - `SDL_PROP_RENDERER_HDR_HEADROOM_FLOAT`: the additional high dynamic range * that can be displayed, in terms of the SDR white point. When HDR is not - * enabled, this will be 1.0. + * enabled, this will be 1.0. This property can change dynamically when SDL_EVENT_DISPLAY_HDR_STATE_CHANGED is sent. * - `SDL_PROP_RENDERER_D3D9_DEVICE_POINTER`: the IDirect3DDevice9 associated * with the renderer * - `SDL_PROP_RENDERER_D3D11_DEVICE_POINTER`: the ID3D11Device associated diff --git a/include/SDL3/SDL_video.h b/include/SDL3/SDL_video.h index 1cbc4ec828..77a03cf81d 100644 --- a/include/SDL3/SDL_video.h +++ b/include/SDL3/SDL_video.h @@ -355,15 +355,15 @@ extern DECLSPEC SDL_DisplayID SDLCALL SDL_GetPrimaryDisplay(void); * * The following read-only properties are provided by SDL: * - * - `SDL_PROP_DISPLAY_HDR_ENABLED_BOOLEAN`: true if the display has HDR - * headroom above the SDR white point. + * - `SDL_PROP_DISPLAY_HDR_ENABLED_BOOLEAN`: true if the display has HDR + * headroom above the SDR white point. This property can change dynamically when SDL_EVENT_DISPLAY_HDR_STATE_CHANGED is sent. * - `SDL_PROP_DISPLAY_SDR_WHITE_POINT_FLOAT`: the value of SDR white in the * SDL_COLORSPACE_SRGB_LINEAR colorspace. On Windows this corresponds to the * SDR white level in scRGB colorspace, and on Apple platforms this is - * always 1.0 for EDR content. + * always 1.0 for EDR content. This property can change dynamically when SDL_EVENT_DISPLAY_HDR_STATE_CHANGED is sent. * - `SDL_PROP_DISPLAY_HDR_HEADROOM_FLOAT`: the additional high dynamic range * that can be displayed, in terms of the SDR white point. When HDR is not - * enabled, this will be 1.0. + * enabled, this will be 1.0. This property can change dynamically when SDL_EVENT_DISPLAY_HDR_STATE_CHANGED is sent. * * \param displayID the instance ID of the display to query * \returns a valid property ID on success or 0 on failure; call diff --git a/src/video/cocoa/SDL_cocoamodes.m b/src/video/cocoa/SDL_cocoamodes.m index 42d54a4bd6..862bc56b54 100644 --- a/src/video/cocoa/SDL_cocoamodes.m +++ b/src/video/cocoa/SDL_cocoamodes.m @@ -299,7 +299,11 @@ static void Cocoa_GetHDRProperties(CGDirectDisplayID displayID, SDL_HDRDisplayPr if (@available(macOS 10.15, *)) { NSScreen *screen = GetNSScreenForDisplayID(displayID); if (screen) { - HDR->HDR_headroom = screen.maximumExtendedDynamicRangeColorComponentValue; + if (screen.maximumExtendedDynamicRangeColorComponentValue > 1.0f) { + HDR->HDR_headroom = screen.maximumExtendedDynamicRangeColorComponentValue; + } else { + HDR->HDR_headroom = screen.maximumPotentialExtendedDynamicRangeColorComponentValue; + } } } #endif diff --git a/src/video/uikit/SDL_uikitmodes.m b/src/video/uikit/SDL_uikitmodes.m index 8da779e016..b64a9c3304 100644 --- a/src/video/uikit/SDL_uikitmodes.m +++ b/src/video/uikit/SDL_uikitmodes.m @@ -247,7 +247,11 @@ int UIKit_AddDisplay(UIScreen *uiscreen, SDL_bool send_event) #ifndef SDL_PLATFORM_TVOS if (@available(iOS 16.0, *)) { - display.HDR.HDR_headroom = uiscreen.currentEDRHeadroom; + if (uiscreen.currentEDRHeadroom > 1.0f) { + display.HDR.HDR_headroom = uiscreen.currentEDRHeadroom; + } else { + display.HDR.HDR_headroom = uiscreen.potentialEDRHeadroom; + } } #endif /* !SDL_PLATFORM_TVOS */