Video playback over-saturated when full-screen on SDR screen if another monitor has HDR on.
Categories
(Core :: Graphics, defect, P3)
Tracking
()
| Tracking | Status | |
|---|---|---|
| firefox-esr115 | --- | unaffected |
| firefox124 | --- | unaffected |
| firefox125 | --- | unaffected |
| firefox126 | --- | fixed |
| firefox127 | --- | fixed |
People
(Reporter: mcortt, Assigned: sotaro)
References
(Blocks 1 open bug)
Details
(Keywords: nightly-community, regression)
Attachments
(7 files)
User Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:124.0) Gecko/20100101 Firefox/124.0
Steps to reproduce:
- Launch youtube.com
- Play any video.
- Go full-screen on SDR monitor while HDR is turned on for another monitor.
Actual results:
Video becomes over-saturated when full-screen.
Expected results:
Video should play at original color.
Comment 1•2 years ago
|
||
The Bugbug bot thinks this bug should belong to the 'Core::Audio/Video: Playback' component, and is moving the bug to that component. Please correct in case you think the bot is wrong.
User agent is listed incorrectly for some reason. Should be:
User Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:126.0) Gecko/20100101 Firefox/126.0
I have also attached about:support info.
I would also like to point out this is only effecting Firefox Nightly.. Firefox Stable doesn't have the issue.
Thanks for the report!
Would you be able to install mozregression to help narrow down the changes that caused this bug? When you start mozregression, click the icon in the top left corner of the window that looks like a pair of scissors. Leave "basic configuration" and "profile selection" as they are, clicking next for each. On the "build selection" screen, click the dropdown for the "Last known good build" line, set it to release, and then select "124" as the release (or whichever release you were on without the bug). Click finish, and then Firefox will launch. Replicate the buggy behavior, close Firefox, and mozregression will ask you whether it was a good or bad build. After several iterations of this, it will narrow down the commit which caused the bug, showing something like the following:
2024-04-02T11:28:04.770000: DEBUG : Found commit message:
Bug 1887305 - Move ValueToIdentifier call before requireDebuggee check. r=iain
ValueToIdentifier can invoke JS code that removes the debuggee, so we have to reorder these operations.
Differential Revision: https://phabricator.services.mozilla.com/D205835
2024-04-02T11:28:04.770000: DEBUG : Did not find a branch, checking all integration branches
2024-04-02T11:28:04.770000: INFO : The bisection is done.
2024-04-02T11:28:04.770000: INFO : Stopped
Please paste that output here. Thank you!
(In reply to az [:az] from comment #7)
Thanks for the report!
Would you be able to install mozregression to help narrow down the changes that caused this bug? When you start mozregression, click the icon in the top left corner of the window that looks like a pair of scissors. Leave "basic configuration" and "profile selection" as they are, clicking next for each. On the "build selection" screen, click the dropdown for the "Last known good build" line, set it to release, and then select "124" as the release (or whichever release you were on without the bug). Click finish, and then Firefox will launch. Replicate the buggy behavior, close Firefox, and mozregression will ask you whether it was a good or bad build. After several iterations of this, it will narrow down the commit which caused the bug, showing something like the following:
2024-04-02T11:28:04.770000: DEBUG : Found commit message: Bug 1887305 - Move ValueToIdentifier call before requireDebuggee check. r=iain ValueToIdentifier can invoke JS code that removes the debuggee, so we have to reorder these operations. Differential Revision: https://phabricator.services.mozilla.com/D205835 2024-04-02T11:28:04.770000: DEBUG : Did not find a branch, checking all integration branches 2024-04-02T11:28:04.770000: INFO : The bisection is done. 2024-04-02T11:28:04.770000: INFO : StoppedPlease paste that output here. Thank you!
2024-04-02T14:55:31.915000: INFO : Narrowed integration regression window from [64f24a09, ebc78304] (3 builds) to [64f24a09, d01a6b91] (2 builds) (~1 steps left)
2024-04-02T14:55:31.921000: DEBUG : Starting merge handling...
2024-04-02T14:55:31.921000: DEBUG : Using url: https://hg.mozilla.org/integration/autoland/json-pushes?changeset=d01a6b91c042bf0f4d48bec38e1c2d50469fb247&full=1
2024-04-02T14:55:31.921000: DEBUG : redo: attempt 1/3
2024-04-02T14:55:31.921000: DEBUG : redo: retry: calling _default_get with args: ('https://hg.mozilla.org/integration/autoland/json-pushes?changeset=d01a6b91c042bf0f4d48bec38e1c2d50469fb247&full=1',), kwargs: {}, attempt #1
2024-04-02T14:55:31.924000: DEBUG : urllib3.connectionpool: Resetting dropped connection: hg.mozilla.org
2024-04-02T14:55:33.027000: DEBUG : urllib3.connectionpool: https://hg.mozilla.org:443 "GET /integration/autoland/json-pushes?changeset=d01a6b91c042bf0f4d48bec38e1c2d50469fb247&full=1 HTTP/1.1" 200 None
2024-04-02T14:55:33.085000: DEBUG : Found commit message:
Bug 1882689 - Enable NVIDIA RTX Video TrueHDR in Nightly r=gfx-reviewers,nical
Differential Revision: https://phabricator.services.mozilla.com/D205028
2024-04-02T14:55:33.085000: DEBUG : Did not find a branch, checking all integration branches
2024-04-02T14:55:33.086000: INFO : The bisection is done.
2024-04-02T14:55:33.087000: INFO : Stopped
I am also attaching the full log if needed.
Comment 10•2 years ago
|
||
Thank you mcortt, that's really helpful! sotaro, would you have any ideas here?
| Reporter | ||
Comment 11•2 years ago
|
||
Turning off Nvidia Auto HDR fixes the issue for now. Dunno if this is more of an Nvidia problem now. Might need further investigation or changes to allow the browser to detect if it is on an HDR screen or not.
| Reporter | ||
Comment 12•2 years ago
|
||
To add to this, other browsers (Chrome, Edge, Opera GX, Brave, etc.) don't seem to move the AutoHDR feature (when enabled) to inactive unless they are on an HDR capable monitor. So moving SDR content (when Nvidia RTX video enhancement HDR is enabled) from an HDR display to a non-HDR display inactivates it, then reactivates it if you move it back to an HDR dispaly.
Updated•2 years ago
|
| Reporter | ||
Comment 13•2 years ago
|
||
(In reply to mcortt from comment #12)
To add to this, other browsers (Chrome, Edge, Opera GX, Brave, etc.)
don'tseem to move the AutoHDR feature (when enabled) to inactive unless they are on an HDR capable monitor. So moving SDR content (when Nvidia RTX video enhancement HDR is enabled) from an HDR display to a non-HDR display inactivates it, then reactivates it if you move it back to an HDR dispaly.
| Reporter | ||
Comment 14•2 years ago
|
||
I lied. The issue reappears after watching videos for a while, even with Nvidia RTX video enhancement HDR disabled. Restarting the browser fixes it for about 15 minutes or so.
Comment 15•2 years ago
|
||
The bug has a release status flag that shows some version of Firefox is affected, thus it will be considered confirmed.
| Assignee | ||
Updated•2 years ago
|
| Assignee | ||
Comment 16•2 years ago
|
||
Thank you for reporting! I am going to look into the problem.
| Assignee | ||
Updated•2 years ago
|
| Assignee | ||
Comment 17•2 years ago
|
||
When I tried locally with NVIDIA GeForce RTX 2060 SUPER(device id: 0x1f06, Driver Date: 2-7-2024), I could not reproduce the problem. I am going to try more if I could reproduce the problem.
Updated•2 years ago
|
| Assignee | ||
Comment 18•2 years ago
•
|
||
I updated the driver to 31.0.15.5186(3-12-2024) and confirmed the problem.
| Assignee | ||
Comment 19•2 years ago
|
||
It seems that gecko needs to check if monitor supports HDR like DirectCompositionMonitorHDREnabled().
| Assignee | ||
Comment 20•2 years ago
|
||
Comment 21•2 years ago
|
||
Comment 22•2 years ago
|
||
Backed out for causing build bustages in ScreenHelperWin.cpp
[task 2024-04-17T07:41:28.803Z] 07:41:28 INFO - gmake[4]: Entering directory '/builds/worker/workspace/obj-build/widget/windows'
[task 2024-04-17T07:41:28.807Z] 07:41:28 INFO - /builds/worker/fetches/sccache/sccache /builds/worker/fetches/clang/bin/clang-cl -fms-compatibility-version=19.39 -Xclang -std=c++17 -Xclang -ivfsoverlay -Xclang /builds/worker/fetches/vs/overlay.yaml -FoScreenHelperWin.obj -c -I/builds/worker/workspace/obj-build/dist/stl_wrappers -guard:cf -DNDEBUG=1 -DTRIMMED=1 -DUNICODE -D_UNICODE -D_CRT_RAND_S -DCERT_CHAIN_PARA_HAS_EXTRA_FIELDS -D_SECURE_ATL -DCHROMIUM_BUILD -DU_STATIC_IMPLEMENTATION -DWIN32 -D_WIN32 -D_WINDOWS -DWIN32_LEAN_AND_MEAN -DMOZ_UNICODE '-DMOZ_APP_NAME="firefox"' '-DMOZ_TOAST_APP_NAME="Firefox"' -DMOZ_ENABLE_D3D10_LAYER -DWINAPI_NO_BUNDLED_LIBRARIES -DMOZ_HAS_MOZGLUE -DMOZILLA_INTERNAL_API -DIMPL_LIBXUL -DSTATIC_EXPORTABLE_JS_API -I/builds/worker/checkouts/gecko/widget/windows -I/builds/worker/workspace/obj-build/widget/windows -I/builds/worker/workspace/obj-build/ipc/ipdl/_ipdlheaders -I/builds/worker/checkouts/gecko/ipc/chromium/src -I/builds/worker/checkouts/gecko/gfx/cairo/cairo/src -I/builds/worker/checkouts/gecko/layout/forms -I/builds/worker/checkouts/gecko/layout/generic -I/builds/worker/checkouts/gecko/layout/style -I/builds/worker/checkouts/gecko/layout/xul -I/builds/worker/checkouts/gecko/toolkit/components/jsoncpp/include -I/builds/worker/checkouts/gecko/toolkit/xre -I/builds/worker/checkouts/gecko/widget -I/builds/worker/checkouts/gecko/widget/headless -I/builds/worker/checkouts/gecko/xpcom/base -I/builds/worker/workspace/obj-build/dist/include -I/builds/worker/workspace/obj-build/dist/include/nspr -I/builds/worker/workspace/obj-build/dist/include/nss -MD -FI /builds/worker/workspace/obj-build/mozilla-config.h -DMOZILLA_CLIENT -fcrash-diagnostics-dir=/builds/worker/artifacts -TP -Zc:sizedDealloc- -D_HAS_EXCEPTIONS=0 -Gy -Zc:inline -Gw -D_SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING -GR- -Z7 -Xclang -load -Xclang /builds/worker/workspace/obj-build/build/clang-plugin/libclang-plugin.so -Xclang -add-plugin -Xclang moz-check -O2 -Oy- -Werror -W3 -Wbitfield-enum-conversion -Wempty-body -Wformat-type-confusion -Wignored-qualifiers -Wpointer-arith -Wshadow-field-in-constructor-modified -Wsign-compare -Wtautological-constant-in-range-compare -Wtype-limits -Wno-error=tautological-type-limit-compare -Wunreachable-code -Wunreachable-code-return -Wunused-but-set-parameter -Wno-invalid-offsetof -Wclass-varargs -Wempty-init-stmt -Wfloat-overflow-conversion -Wfloat-zero-conversion -Wloop-analysis -Wno-range-loop-analysis -Wenum-compare-conditional -Wenum-float-conversion -Wvolatile -Wno-deprecated-anon-enum-enum-conversion -Wno-deprecated-enum-enum-conversion -Wno-deprecated-this-capture -Wcomma -Wimplicit-fallthrough -Wstring-conversion -Wno-inline-new-delete -Wno-error=deprecated-declarations -Wno-error=array-bounds -Wno-error=free-nonheap-object -Wno-error=atomic-alignment -Wno-error=deprecated-builtins -Wno-unknown-pragmas -Wno-ignored-pragmas -Wno-deprecated-declarations -Wno-microsoft-enum-value -Wno-microsoft-include -Wno-invalid-noreturn -Wno-inconsistent-missing-override -Wno-implicit-exception-spec-mismatch -Wno-microsoft-exception-spec -Wno-unused-local-typedef -Wno-ignored-attributes -Wno-used-but-marked-unused -Wno-psabi -Wthread-safety -Wno-error=builtin-macro-redefined -Wno-vla-cxx-extension -Wno-unknown-warning-option -fno-strict-aliasing -Xclang -ffp-contract=off -Xclang -MP -Xclang -dependency-file -Xclang .deps/ScreenHelperWin.obj.pp -Xclang -MT -Xclang ScreenHelperWin.obj /builds/worker/checkouts/gecko/widget/windows/ScreenHelperWin.cpp
[task 2024-04-17T07:41:28.807Z] 07:41:28 ERROR - /builds/worker/checkouts/gecko/widget/windows/ScreenHelperWin.cpp(134,19): error: use of undeclared identifier 'DeviceManagerDx'
[task 2024-04-17T07:41:28.807Z] 07:41:28 INFO - 134 | auto* manager = DeviceManagerDx::Get();
[task 2024-04-17T07:41:28.807Z] 07:41:28 INFO - | ^
[task 2024-04-17T07:41:28.808Z] 07:41:28 ERROR - /builds/worker/checkouts/gecko/widget/windows/ScreenHelperWin.cpp(159,19): error: use of undeclared identifier 'DeviceManagerDx'
[task 2024-04-17T07:41:28.808Z] 07:41:28 INFO - 159 | auto* manager = DeviceManagerDx::Get();
[task 2024-04-17T07:41:28.808Z] 07:41:28 INFO - | ^
[task 2024-04-17T07:41:28.808Z] 07:41:28 INFO - 2 errors generated.
[task 2024-04-17T07:41:28.808Z] 07:41:28 ERROR - gmake[4]: *** [/builds/worker/checkouts/gecko/config/rules.mk:690: ScreenHelperWin.obj] Error 1
[task 2024-04-17T07:41:28.809Z] 07:41:28 INFO - gmake[4]: Leaving directory '/builds/worker/workspace/obj-build/widget/windows'
[task 2024-04-17T07:41:28.809Z] 07:41:28 INFO - gmake[4]: Entering directory '/builds/worker/workspace/obj-build/widget/windows'
[task 2024-04-17T07:41:28.809Z] 07:41:28 INFO - widget/windows/nsClipboard.obj
| Assignee | ||
Comment 23•2 years ago
|
||
Addressed build failure.
https://treeherder.mozilla.org/jobs?repo=try&revision=6cd14a117b425b0c5e5a0325b51573cabb30bcd0
Comment 24•2 years ago
|
||
Comment 25•2 years ago
|
||
| bugherder | ||
| Assignee | ||
Comment 26•2 years ago
|
||
Hi mcortt, can you check if the problem is addressed for you with latest Nightly?
| Reporter | ||
Comment 27•2 years ago
|
||
Yes it appears to be. Even if RTX HDR is enabled, it moves to inactive on non-HDR monitors and moves to active when on HDR monitors. It's very responsive too. Thank you so much for the fix! Much appreciated!
| Assignee | ||
Comment 28•2 years ago
|
||
Great! Thank you for the confirmation.
| Assignee | ||
Comment 29•2 years ago
|
||
Comment on attachment 9396815 [details]
Bug 1889146 - Check if monitor of window enables HDR
Beta/Release Uplift Approval Request
- User impact if declined: Video playback could be over-saturated with Auto HDR(TrueHDR) is enabled by pref.
- Is this code covered by automated tests?: Yes
- Has the fix been verified in Nightly?: Yes
- Needs manual test from QE?: No
- If yes, steps to reproduce:
- List of other uplifts needed: none
- Risk to taking this patch: Low
- Why is the change risky/not risky? (and alternatives if risky): Auto HDR(TrueHDR) is disabled by pref by default.
- String changes made/needed: none
- Is Android affected?: No
Comment 30•2 years ago
|
||
We'd like this in Beta. It ties into a disabled feature so this fix won't impact the release userbase. A partner may want to flip the feature pref on in 126 so we'd like to get this fix uplifted with the rest of the work we have in 126.
Comment 31•2 years ago
|
||
Comment on attachment 9396815 [details]
Bug 1889146 - Check if monitor of window enables HDR
Approved for 126.0b5
Comment 32•2 years ago
|
||
| uplift | ||
Updated•2 years ago
|
| Assignee | ||
Updated•4 months ago
|
Description
•