video-dynamic-range should match against capabilities of the window's display, not the main display
Categories
(Core :: CSS Parsing and Computation, defect, P1)
Tracking
()
| Tracking | Status | |
|---|---|---|
| firefox126 | --- | fixed |
People
(Reporter: bradwerth, Assigned: bradwerth)
References
(Blocks 2 open bugs)
Details
Attachments
(3 external files, 4 obsolete files)
Our matching logic for video-dynamic-range is keying off the main display when it should instead use the display that is actually hosting the window. This will better support multi-monitor setups.
| Assignee | ||
Updated•4 years ago
|
In the case of mirroring, I assume the primary monitor will be used to determine the results (ie, such as the "optimize for" monitor in MacOS).
This bug sounds likely the cause of https://bugzilla.mozilla.org/show_bug.cgi?id=1812647, which results in YouTube showing inferior video in FireFox (ie streaming HDR content to an SDR monitor instead of showing SDR-optimized content on an SDR monitor).
| Assignee | ||
Comment 3•2 years ago
|
||
| Assignee | ||
Comment 4•2 years ago
|
||
Some dependencies are S2 Bugs, so this should be S2 also.
Comment 5•2 years ago
|
||
I see that the fix for this bug has finally gotten off the ground. When can we expect this bug to be fixed? Thank you!
Updated•2 years ago
|
| Assignee | ||
Comment 6•2 years ago
|
||
| Assignee | ||
Comment 7•2 years ago
|
||
| Assignee | ||
Comment 8•2 years ago
|
||
This makes both macOS and Windows report video-dynamic-range:high if the
platform itself can support it (any screen is HDR), and then makes the
media query additionally check that the actual screens are HDR capable.
Updated•2 years ago
|
Updated•2 years ago
|
Updated•2 years ago
|
| Assignee | ||
Comment 9•2 years ago
|
||
This duplicates existing HDR checks in gfxPlatformMac and
gfxWindowsPlatform. A later part of this patch series will remove that
redundant code, as it replaces calls to gfxPlatform functions with calls
to ScreenManager functions.
Updated•2 years ago
|
| Assignee | ||
Comment 10•2 years ago
|
||
The gfxPlatform::GetScreen* methods have always been redundant. Removing
them in favor of ScreenManager or nsDeviceContext methods will
discourage future code authors from adding more redundancy in
gfxPlatform.
Updated•2 years ago
|
| Assignee | ||
Comment 11•2 years ago
|
||
This removes a timing dependency that otherwise requires gfxPlatform to
be initialized before this singleton can be accessed.
Updated•2 years ago
|
Updated•2 years ago
|
Updated•2 years ago
|
Updated•2 years ago
|
Updated•2 years ago
|
Updated•2 years ago
|
Updated•2 years ago
|
| Assignee | ||
Comment 12•2 years ago
|
||
Bug 1885599 doesn't need to be a blocker. The updated patches can handle a missing DeviceManagerDx, concluding in such a case that the screen(s) are not HDR.
Updated•2 years ago
|
Updated•2 years ago
|
Updated•2 years ago
|
Comment 13•2 years ago
|
||
Comment 14•2 years ago
•
|
||
Backed out for causing multiple failures, including build bustages @ widget/windows/ScreenHelperWin.cpp
Backout link: https://hg.mozilla.org/integration/autoland/rev/adfe57981526527ef9d85979937d06f6e8b5c9ea
| Assignee | ||
Comment 15•2 years ago
|
||
One problem is that the removal of gfxPlatform::PopulateScreenInfo removed the call to gfxVars::SetScreenDepth with a value from the primary screen. This is needed in GLContextProviderEGL::CreateConfigScreen to have a sane bit depth value. Possible fixes:
- Restore
gfxPlatform::PopulateScreenInfojust to preserve the setting of gfxVars screen depth for the primary screen. - Make
GLContextProviderEGL::CreateConfigScreenpull primary screen scene depth from thewidget::ScreenManager. - Modify
GLContextProviderEGL::CreateConfigScreento take a screen parameter, and use that to get the specific screen's depth from thewidget::ScreenManager.
Option 3 is the best, most forward-looking choice. I fear it may be a bunch of code modification that snarls up this patch further. I'm tempted to pursue Option 2 (preserving current behavior) and file a new bug for the improvements to GLContextProviderEGL::CreateConfigScreen.
| Assignee | ||
Comment 16•2 years ago
|
||
(In reply to Brad Werth [:bradwerth] from comment #15)
One problem is that the removal of
gfxPlatform::PopulateScreenInforemoved the call togfxVars::SetScreenDepthwith a value from the primary screen. This is needed inGLContextProviderEGL::CreateConfigScreento have a sane bit depth value. Possible fixes:
- Restore
gfxPlatform::PopulateScreenInfojust to preserve the setting of gfxVars screen depth for the primary screen.- Make
GLContextProviderEGL::CreateConfigScreenpull primary screen scene depth from thewidget::ScreenManager.- Modify
GLContextProviderEGL::CreateConfigScreento take a screen parameter, and use that to get the specific screen's depth from thewidget::ScreenManager.
It wasn't effective to try Option 2, because the ScreenManager can only be instantiated on the main thread, and GLContextProviderEGL::CreateConfigScreen runs on the render thread. So instead pursuing Option 1.
Comment 17•2 years ago
|
||
Comment 18•2 years ago
|
||
| bugherder | ||
https://hg.mozilla.org/mozilla-central/rev/09f6a0b25938
https://hg.mozilla.org/mozilla-central/rev/88d751bcbf03
https://hg.mozilla.org/mozilla-central/rev/f42d24696e43
| Assignee | ||
Updated•2 years ago
|
Description
•