feat(render) add 10-bit SDR support - #172
Conversation
|
Thanks for working on this @Myles-Trevino . The feature and configuration interface look good, but I found two issues that should be fixed before merging. Blocking issues
Additional concerns
I like the direction, but I would request changes until the output transitions and FP16 capability handling are corrected. |
46b8d79 to
8889752
Compare
|
@Ly-sec Appreciate your quick review. I've tried to address the concerns you brought up in the follow-up commit |
8889752 to
841629d
Compare
|
Thanks, this is much closer @Myles-Trevino . Two retry issues remain:
The new check also does not exercise active HDR or clear a previously set SDR10 fallback reason. Could you cover these before merge? |
|
@Ly-sec Added a fix for the fallback issues and did some refactoring. As far as I can tell, on headless, HDR always gets declined and SDR10 always gets accepted, and it looks like overriding that for testing could expand the scope of this PR a decent amount. The existing HDR feature doesn't seem to do this either, so leaving that as-is for now |
|
Thanks, the follow-up fixes the two retry issues from my previous comment @Myles-Trevino . I also agree that adding a general failure-injection system to the headless backend would expand the scope too much. The branches that headless cannot naturally reach can be covered with focused unit tests instead. I reviewed the updated implementation as a whole, and there are still four correctness issues I think we should resolve before merging. 1. The FP16 capability check can regress HDRThe updated Color-transformed passes need to remain FP16. The filtering capability gate should apply only to the new SDR10 effect-buffer upgrade. The renderer should also distinguish FP16 renderability, FP16 linear filterability, and legacy GLES2 OES upload support. GLES3 provides half-float filtering in core and does not need to expose the legacy OES extension string. 2. Optimized blur caches do not follow bit-depth changes
The required DRM format needs to be part of cache validity so the cache is recreated when output precision changes. 3. Output fallback needs to integrate with the current mode fallbackThe branch now conflicts with
Please make the retry order deterministic and restart it for the preferred fallback mode:
The same sequence should continue when a state test succeeds but the real commit fails. Fallback reasons should only be stored after the relevant candidates are exhausted, otherwise a mode or VRR failure can be incorrectly reported as rejected SDR10. 4. IPC can report SDR10 as active when it is notThe current Please keep configured intent separate from runtime state. Active SDR10 should require all of the following:
The human-readable label should also make it clear that Testing without expanding the headless backendI think a reasonable test split for this PR is:
Each new regression check should be proven failure-first as required by the repository testing policy. The documentation should also clarify that With those points addressed, I think the feature and its user-facing configuration are in good shape. |
6972ce8 to
b8391f6
Compare
b8391f6 to
9f1e6be
Compare
|
@Ly-sec Updated to fix issues and add tests |
|
Thanks, this is much closer @Myles-Trevino . I reviewed the latest head and verified that all 59 unit tests and focused headless checks 641 and 643 pass. There are still a few things to address before I can approve it:
Once these are addressed, please also confirm the native active-HDR to SDR10 transition and native SDR10 capture on the updated head. |
Summary
Add support for 10-bit SDR output
Motivation
Some monitors support bit depths higher than 8. When using semi-transparent windows with background blur, banding can become a problem, especially with dark gradients on OLED. 10-bit output makes these gradients smooth
Type of Change
Related Issue
Testing
Ran in a native session. Confirmed changing bit_depth from 8 to 10 improves color quality and reduces banding
Manual Coverage
Screenshots / Videos
Checklist
SCOPE.md, or its scope was agreed in an issue or on Discord first.CONTRIBUTING.md.just format, or this PR has no C++ changes.docs/andexamples/config.toml, or this PR does not change user-facing configuration or behavior.Additional Notes