fix(apple): detect macOS HDR via potential EDR headroom, not current
apple / swift (push) Successful in 1m14s
release / apple (push) Successful in 9m12s
ci / web (push) Successful in 52s
apple / screenshots (push) Successful in 6m21s
ci / docs-site (push) Successful in 1m10s
ci / rust (push) Failing after 6m24s
ci / bench (push) Successful in 5m14s
decky / build-publish (push) Successful in 17s
docker / build-push (--build-arg FEDORA_VERSION=44, ci, ci/fedora-rpm.Dockerfile, punktfunk-fedora44-rpm) (push) Successful in 9s
docker / build-push (., web/Dockerfile, punktfunk-web) (push) Successful in 8s
docker / build-push (ci, ci/fedora-rpm.Dockerfile, punktfunk-fedora-rpm) (push) Successful in 8s
arch / build-publish (push) Successful in 11m58s
deb / build-publish (push) Successful in 12m27s
docker / build-push (docs-site, docs-site/Dockerfile, punktfunk-docs) (push) Successful in 9s
deb / build-publish-host (push) Successful in 9m38s
android / android (push) Successful in 20m55s
windows-host / package (push) Successful in 19m4s
docker / build-push (ci, ci/rust-ci-noble.Dockerfile, punktfunk-rust-ci-noble) (push) Successful in 9m45s
docker / build-push (ci, ci/rust-ci.Dockerfile, punktfunk-rust-ci) (push) Successful in 9m20s
rpm / build-publish (44, fedora-44, punktfunk-fedora44-rpm) (push) Successful in 14m35s
rpm / build-publish (43, bazzite, punktfunk-fedora-rpm) (push) Has been cancelled
docker / deploy-docs (push) Successful in 27s
apple / swift (push) Successful in 1m14s
release / apple (push) Successful in 9m12s
ci / web (push) Successful in 52s
apple / screenshots (push) Successful in 6m21s
ci / docs-site (push) Successful in 1m10s
ci / rust (push) Failing after 6m24s
ci / bench (push) Successful in 5m14s
decky / build-publish (push) Successful in 17s
docker / build-push (--build-arg FEDORA_VERSION=44, ci, ci/fedora-rpm.Dockerfile, punktfunk-fedora44-rpm) (push) Successful in 9s
docker / build-push (., web/Dockerfile, punktfunk-web) (push) Successful in 8s
docker / build-push (ci, ci/fedora-rpm.Dockerfile, punktfunk-fedora-rpm) (push) Successful in 8s
arch / build-publish (push) Successful in 11m58s
deb / build-publish (push) Successful in 12m27s
docker / build-push (docs-site, docs-site/Dockerfile, punktfunk-docs) (push) Successful in 9s
deb / build-publish-host (push) Successful in 9m38s
android / android (push) Successful in 20m55s
windows-host / package (push) Successful in 19m4s
docker / build-push (ci, ci/rust-ci-noble.Dockerfile, punktfunk-rust-ci-noble) (push) Successful in 9m45s
docker / build-push (ci, ci/rust-ci.Dockerfile, punktfunk-rust-ci) (push) Successful in 9m20s
rpm / build-publish (44, fedora-44, punktfunk-fedora44-rpm) (push) Successful in 14m35s
rpm / build-publish (43, bazzite, punktfunk-fedora-rpm) (push) Has been cancelled
docker / deploy-docs (push) Successful in 27s
`maximumExtendedDynamicRangeColorComponentValue` is the CURRENTLY-allocated EDR headroom, which macOS hands out on demand — an idle SDR desktop reads 1.0 even with an HDR display enabled and active, so gating HDR advertisement on it means an HDR monitor (e.g. Samsung G95SC) never gets advertised at connect time. Use `maximumPotentialExtendedDynamicRangeColorComponentValue`, the mode-independent capability (the macOS analogue of the tvOS/iOS gates). Also point the Xcode scheme's LaunchAction at Release. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -30,7 +30,7 @@
|
|||||||
shouldAutocreateTestPlan = "YES">
|
shouldAutocreateTestPlan = "YES">
|
||||||
</TestAction>
|
</TestAction>
|
||||||
<LaunchAction
|
<LaunchAction
|
||||||
buildConfiguration = "Debug"
|
buildConfiguration = "Release"
|
||||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||||
launchStyle = "0"
|
launchStyle = "0"
|
||||||
|
|||||||
@@ -210,7 +210,13 @@ final class SessionModel: ObservableObject {
|
|||||||
// metadata we apply (Step 2) when it IS HDR.
|
// metadata we apply (Step 2) when it IS HDR.
|
||||||
let displayHDR: Bool = {
|
let displayHDR: Bool = {
|
||||||
#if os(macOS)
|
#if os(macOS)
|
||||||
return (NSScreen.main?.maximumExtendedDynamicRangeColorComponentValue ?? 1.0) > 1.0
|
// POTENTIAL, not current, headroom: `maximumExtendedDynamicRangeColorComponentValue`
|
||||||
|
// is the CURRENTLY-ALLOCATED headroom, which macOS hands out on demand — on an idle
|
||||||
|
// SDR desktop it reads 1.0 even with HDR enabled and active (external HDR displays
|
||||||
|
// like the Samsung G95SC allocate EDR only when content asks). Gating on it means an
|
||||||
|
// HDR monitor never gets advertised at connect time. `maximumPotential…` is the
|
||||||
|
// mode-independent capability (the macOS analogue of the tvOS/iOS gates below).
|
||||||
|
return (NSScreen.main?.maximumPotentialExtendedDynamicRangeColorComponentValue ?? 1.0) > 1.0
|
||||||
#elseif os(tvOS)
|
#elseif os(tvOS)
|
||||||
// NOT the EDR headroom here: on tvOS that reflects the CURRENT output mode, and
|
// NOT the EDR headroom here: on tvOS that reflects the CURRENT output mode, and
|
||||||
// Apple's recommended setup runs an SDR home screen with Match Content — an
|
// Apple's recommended setup runs an SDR home screen with Match Content — an
|
||||||
|
|||||||
Reference in New Issue
Block a user