SDL: Added HDR support on visionOS

From efce7ca4b16486bb47cf8edb92eca35967e6a73a Mon Sep 17 00:00:00 2001
From: Sam Lantinga <[EMAIL REDACTED]>
Date: Fri, 3 Jul 2026 13:32:44 -0700
Subject: [PATCH] Added HDR support on visionOS

---
 src/video/uikit/SDL_CurvedContentView.swift | 1 +
 src/video/uikit/SDL_uikitmodes.m            | 5 +++++
 2 files changed, 6 insertions(+)

diff --git a/src/video/uikit/SDL_CurvedContentView.swift b/src/video/uikit/SDL_CurvedContentView.swift
index d7c0abdac666b..55ed128a9fcaa 100644
--- a/src/video/uikit/SDL_CurvedContentView.swift
+++ b/src/video/uikit/SDL_CurvedContentView.swift
@@ -285,6 +285,7 @@ internal struct SDL_CurvedContentView: View {
             helper.updateSnappedStatus(snapped: snappedStatus.isSnapped)
         }
         .preferredSurroundingsEffect(shouldEnableDimming ? .dark : nil)
+        .allowedDynamicRange(.high)
         .frame(depth: 0)
         .ignoresSafeArea()
         .persistentSystemOverlays(settings.sceneState == .cinematic ? .hidden : .automatic)
diff --git a/src/video/uikit/SDL_uikitmodes.m b/src/video/uikit/SDL_uikitmodes.m
index 3fd18c8bee5f0..96b246dea51ea 100644
--- a/src/video/uikit/SDL_uikitmodes.m
+++ b/src/video/uikit/SDL_uikitmodes.m
@@ -283,6 +283,11 @@ bool UIKit_AddDisplay(bool send_event)
 
     display.desktop_mode = mode;
 
+    // There isn't currently a way to query the EDR headeroom on visionOS.
+    // The range is 1 - 16, so we'll assume a current value of 2 for now.
+    display.HDR.SDR_white_level = 1.0f;
+    display.HDR.HDR_headroom = 2.0f;
+
     SDL_UIKitDisplayData *data = [[SDL_UIKitDisplayData alloc] init];
 
     if (!data) {