Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Make Stillcolor Monterey compatible #7

Open
AlecKinnear opened this issue May 27, 2024 · 11 comments
Open

Make Stillcolor Monterey compatible #7

AlecKinnear opened this issue May 27, 2024 · 11 comments
Assignees

Comments

@AlecKinnear
Copy link

I've found Monterey more stable and easier to use than Ventura. Monterey is still macOS and not some weird hybrid iPadOS/macOS. I plan to stick to Monterey for another productive two or three years.

I am sensitive to monitor flicker (can't use M1 iPad Pro, can't use M1 MBP 16 for more than two hours).

I do have two M1 Mac Studio (Ultra and Max), at home and work. I'd very much like to enable Stillcolor on them in Monterey. I'm prepared to contribute to Stillcolor if you are willing/able to support a Monterey version.

@aiaf aiaf self-assigned this May 30, 2024
@olsgo
Copy link

olsgo commented Jul 9, 2024

I've found Monterey more stable and easier to use than Ventura. Monterey is still macOS and not some weird hybrid iPadOS/macOS. I plan to stick to Monterey for another productive two or three years.

I am sensitive to monitor flicker (can't use M1 iPad Pro, can't use M1 MBP 16 for more than two hours).

I do have two M1 Mac Studio (Ultra and Max), at home and work. I'd very much like to enable Stillcolor on them in Monterey. I'm prepared to contribute to Stillcolor if you are willing/able to support a Monterey version.

Any plans to implement this? I'm in a similar boat.

@gutofarias
Copy link

Me too!

@noizje
Copy link

noizje commented Jul 26, 2024

Same!

@GMMDMDIDEMS
Copy link

Monterey/macOS 12.0+ support
Let me know whether it works.

@gutofarias
Copy link

I can not say for sure but I think it works!

guto@GutoMM ~ % ioreg -lw0 | grep -i enableDither
| | | | "enableDither" = No
| | | | "enableDither" = No

@aiaf
Copy link
Owner

aiaf commented Sep 14, 2024

Monterey/macOS 12.0+ support Let me know whether it works.

This is amazing! Please submit a pull request into the 1.x-macos12-compat branch where I will review it on my machine. Thank you!!

@AlecKinnear
Copy link
Author

AlecKinnear commented Sep 20, 2024

Thank you so much. Stillcolor installs on my MacBook Pro M1 Max 12.7.4 and works. The Disable Dithering checkbox is sticky and inconsistent, very difficult to toggle. When switched though it works. Dithering disabled:

alec@AlecMBPro16 local % ioreg -lw0 | grep -i enableDither
    | |   "boot-args" = "enableDither=0"
    | |     "boot-args" = "enableDither=0"
    | |   |   |   "enableDither" = No
    | |   |   |   "enableDither" = No
    | |   |   |   "enableDither" = No
    | |   |   |   "enableDither" = No
    | |   |   |   "enableDither" = No

Dithering enabled:

alec@AlecMBPro16 local % ioreg -lw0 | grep -i enableDither
    | |   "boot-args" = "enableDither=0"
    | |     "boot-args" = "enableDither=0"
    | |   |   |   "enableDither" = Yes
    | |   |   |   "enableDither" = Yes
    | |   |   |   "enableDither" = Yes
    | |   |   |   "enableDither" = Yes
    | |   |   |   "enableDither" = Yes

Here's where it gets even more interesting. BetterDisplay recently added an Image Adjustment setting for dithering.

Now that I have a way to test for dithering with ioreg -lw0 | grep -i enableDither, I decided to test it too.

When dithering is enabled, BetterDisplay can turn it off on a single screen.

alec@AlecMBPro16 local % ioreg -lw0 | grep -i enableDither
    | |   "boot-args" = "enableDither=0"
    | |     "boot-args" = "enableDither=0"
    | |   |   |   "enableDither" = Yes
    | |   |   |   "enableDither" = No
    | |   |   |   "enableDither" = Yes
    | |   |   |   "enableDither" = Yes
    | |   |   |   "enableDither" = Yes

When dithering is disabled, BetterDisplay can turn it on.

alec@AlecMBPro16 local % ioreg -lw0 | grep -i enableDither

    | |   "boot-args" = "enableDither=0"
    | |     "boot-args" = "enableDither=0"
    | |   |   |   "enableDither" = No
    | |   |   |   "enableDither" = Yes
    | |   |   |   "enableDither" = No
    | |   |   |   "enableDither" = No
    | |   |   |   "enableDither" = No

So Stillcolor works on Monterey, BetterDisplay works reliably. BetterDisplay's monitor specific disable/enable of dithering supersedes Stillcolor. This seems to be exactly the right behaviour. BetterDisplay is paid software for the advanced features (I've paid) so Stillcolor has its place. BetterDisplay can also be overkill for people with eye issues who are not that into monitor management. It took me a few hours to learn to navigate BetterDisplay's interface as it does so much. It's deep software and I'm still only an intermediate user, not an expert.

Glad to have both of them. Monterey will be on my computers for at least another year.

In terms of the effect on eyes. The monitor does look better but that could be psychosomatic. With all the playing with gradients I tried I couldn't find one which gave me a clear sign that it was in 8-bit or 10-bit. The best online gradient tool which I've found is Eizo's test. The opening test pattern has a smooth gradient but it looks fine with dithering disabled. The main gradient section are 256 colour gradients so they should have lines (and do).

If anyone knows of a clear visual test for FRC dithering 8-bit to 10-bit, please share.

@GMMDMDIDEMS
Copy link

@AlecKinnear thank you very much for the detailed feedback. What do you mean by

The Disable Dithering checkbox is sticky and inconsistent, very difficult to toggle.

Could you upload an image to illustrate the issue?

I recently opened PR #12 to add Monterey support, fixing some bugs compared to the version on my Stillcolor fork. So potentially these issues may already be fixed and will be available as soon as the PR is merged and a Monterey-compatible version is released.

@AlecKinnear
Copy link
Author

@ GMMDMDIDEMS I'm glad the feedback helps.

Could you upload an image to illustrate the issue?

Difficult, it would have to be a video. What happens is that I go click click click and the Disable Dithering checkbox does not toggle. Eventually it does, ten or twelve click later. A double click usually works but that toggles the checkbox on and off. Fortunately turning dithering on and off (except when testing!) is not a regular activity.


Here's a better full-width 10-bit colour gradient. What worries me is that even with dithering disabled the gradient is smooth. Perhaps the HP U32 4K does internal dithering. If that's the case, turning off software dithering would still be an advantage as running two dithering functions at the same time would not work well. By trying to do the same thing they would interfere with one another.

Browsing some high quality images locally (original NEF raw files in DxO Photolab) I don't see any quality difference when dithering is disabled. Strange. Open to insights from others about why the absence of dithering doesn't seem to matter much. Certainly better for the eyes with it off (the flicker). I see a little bit more colour depth in my skies (touch darker/richer) if I look carefully but that's it. Even as a photographer, working in 8-bit colour would not be a barrier to preparing my images (my work is people and sport and landscape, not abstracts or design where precise gradients would matter most).

What does matter is reducing eye strain though, to allow longer work sessions, so I'm very happy to be able to turn off dithering and disable PWM (using the BetterDisplay technique of combining hardware and software dimming).

@aiaf
Copy link
Owner

aiaf commented Sep 22, 2024

@AlecKinnear @GMMDMDIDEMS There's a few things to keep in mind when it comes to dithering and gradients, these are all my recent discoveries for silicon Macs:

  • Enabling HDR on external displays automatically switches to 10-bit color depth (HDR10 by definition requires 10-bit color depth) and disables Apple's temporal dithering for that display (equivalent to enableDither = No, but the display will still show enableDither = Yes in the registry). This is tentatively confirmed with a capture card.
  • Apple's Preview / Adobe Photoshop / etc- all these high-end graphics apps use static dithering internally, so even if your display is on 8-bit color AND with Apple temporal dithering disabled they will still display smooth 10-bit and 12-bit gradients.
  • The way Apple handles dynamic range, gamma, and TCON-generated dithering for its built-in monitor (especially XDR monitors) is still a mystery to me and will require deeper investigation.

I will incorporate support for macOS 12 in the Stillcolor 1.x branch, but Stillcolor 2.0 which is under development and will have per-display color control will only support macOS 13+.

If backwards compatibility is a concern I definitely recommend using BetterDisplay- it's not a drop-in solution and will require some set up, but it's excellent software and actively supported.

Edit: @AlecKinnear the LCDTech gradient test you linked to is flawed. Those gradients are built with static dithering.
Edit 2: the LCDTech gradient is generated with CSS, and on Chrome and Safari (Blink & Webkit based browsers), they demonstrate static dithering. Firefox however does not use static dithering and will show appropriate banding.

@AlecKinnear
Copy link
Author

@aiaf Thanks for your answers.

I will incorporate support for macOS 12 in the Stillcolor 1.x branch, but Stillcolor 2.0 which is under development and will have per-display color control will only support macOS 13+.

No problem. Some basic support for Monterey is all we ask for. It's not necessary for Monterey to get all the new bells and whistles.

the LCDTech gradient test you linked to is flawed. Those gradients are built with static dithering.
Edit 2: the LCDTech gradient is generated with CSS, and on Chrome and Safari (Blink & Webkit based browsers), they demonstrate static dithering. Firefox however does not use static dithering and will show appropriate banding.

I'm not getting much banding even in Firefox 113.0.1 on macOS 12.6.9 with dithering turned off on that LCDTech gradient test. Is there a test you would prefer we used which specufically shows when dithering is on and off more clearly?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants