• Hardware
  • Can No Longer Tolerate iMac After COVID

sdkjbfakgljbafkjb

I did try the sRGB color profile - it actually made it worse, strangely. The MacBook Pro 2015 seems tolerable, so I think you’re right. I’m not sure whether the iMac 21.5in 2019 display has PWM. I thought switching to “millions of colors” would disable dithering with SwitchResX on iMacs, and while I can look at the screen for a few seconds as opposed to not at all when it is not enabled, it doesn’t seem to help. Unfortunately Apple removed the ability to connect these iMacs to an external monitor, so I have no way to test if another display would resolve it.

It’s bewildering to me that I can tolerate my iPhone 13 which does have PWM. Perhaps I’m just used to the frequency and waveform of this particular display. I tried the M2-M4 MacBook Airs in store and it didn’t agree with me. I remember tolerating a MacBook Pro 14in M1 in 2022 that I later sold. I wonder if it’s about finding something that mimics my phone as opposed to just trying to find a flicker free display. But it’s impossible to test these computers before buying them. I’ve looked at Windows computers in Best Buy as well and they’re even worse than the Macs for me. I’m stumped!

"This model (iMac 21.5 2019) has a 21.5" 4096x2304 LED-backlit 16:9 widescreen IPS DCI-P3 "Retina 4K" display"

Well DCI-P3 (color space) and billions of colors, there you go. So certainly lots of dithering (not sure what of this is new to you). Not sure if the backlight has PWM but I'm sure there's some info out there

Well perhaps if you tolerated the MBP 14 M1 you could get that again?. Perhaps with returns (some on ebay have that) because of the panel lottery. But yeah if it's "just so-so" works it's a bit annoying

Btw "font smoothing" is another option to disable in settings; because it also uses dithering in newer Macs

Clokwork

I will describe two cases: temporal dithering at the GPU level and at the monitor level.

To begin with, I will provide a general concept of temporal dithering.

Temporal dithering is a technology used to improve color representation on a screen. If a device (such as a monitor or graphics card) cannot accurately display a specific color due to limitations, it rapidly alternates between neighboring shades, creating the illusion of the desired color. This process happens so quickly that the human eye perceives a blended color rather than individual flickers.

Temporal dithering at the GPU level

The GPU processes frames before sending them to the monitor. The temporal dithering algorithm, which is typically implemented at the GPU level in this case, makes changes to the frames that will be displayed on the monitor. Therefore, the maximum frequency of temporal dithering cannot exceed the current frame rate of the monitor.

What about the minimum frequency? This is a bit more complex. Temporal dithering is applied only to those areas of the frames where additional color simulation is required. If the frames already matches the desired color palette, the algorithm may be completely disabled. In other words, the minimum frequency of temporal dithering depends on whether the algorithm needs to be applied and can be zero if temporal dithering is not used.

Temporal dithering at the monitor level

If we talk about FRC, it is one of the forms of temporal dithering used in displays. Everything I described above also applies to FRC. The only difference is that it operates not at the GPU level, but at the monitor level.

    Thanks. Yeah I think the dithering too complex to somehow "remove" away per framerate. Who knows at what rates it dithers and what part of the picture, and so on

    WhisperingWind

    Pardon my ignorance, so does a program like Stillcolor essentially override dithering at the system level so it never turns on? Or can programs themselves still trigger it? I wonder why some people don’t have luck with Stillcolor. Is this an indication that you can’t actually at this point disable dither permanently on MacOS?

    Or is this an indication that PWM and dithering are not the sole factors for discomfort, and if so, that complicates things. Using my iMac as an example; I have SwitchResX running with “millions of colors” selected which is supposed to disable dithering. I do indeed notice a difference when it is not running, but it is not enough to resolve my issues with this screen. I don’t believe the screen has PWM. So all that leaves is the Radeon Pro 560X graphics card. I wonder if SwitchResX is unable to fully disable dithering because this Mac is not using intel integrated graphics. This is just a guess as I don’t know the inner workings of either. Or perhaps I’ve just become more sensitive to screens since I haven’t used a computer in 9 months. I recall people having problems with iMacs in the late 2010s, so perhaps I’m missing something.

      WhisperingWind Thanks for that. With some preliminary readings that I am getting from the flicker meter that I purchased, I am starting to notice that one part of the equation affecting me is the amplitude of the dips/peaks when the flicker happens. This is very apparent with many OLED panels.

      I'm thinking that in combination with FRC is what's troubling me. I just need to prove it.

      @sdkjbfakgljbafkjb I wish I knew what algorithms were being used. I wonder if the flickering is only between two shades or is it more?

      AshX

      does a program like Stillcolor essentially override dithering at the system level so it never turns on?

      StillColor and BetterDisplay disable temporal dithering at the GPU level. There is no other source of temporal dithering in macOS.

      Some internal displays of MacBooks and iMacs may have their own temporal dithering (FRC), but there’s nothing we can do about it. I always use an external monitor with my MBP M1, as the internal display causes discomfort even without PWM, but because of dithering.

      Or can programs themselves still trigger it?

      This is unlikely because triggering temporal dithering requires access to the frame buffer. Such access is not available to regular applications, only to system components. As mentioned above, temporal dithering is primarily a GPU prerogative.

      But in theory, the case I will describe below is possible; this description should be taken with a grain of salt, as it is just an assumption.

      In OpenGL, there is an option to enable spatial dithering. However, its interpretation depends on the graphics card driver. For example, in Linux, it is completely ignored for Intel-based graphics cards. I am not sure how it works in macOS. If some app uses OpenGL instead of Metal for hardware acceleration, then theoretically, spatial dithering could occur in the area where hardware-accelerated rendering is running. However, it is highly unlikely (almost impossible) that this would involve temporal dithering.

      I wonder why some people don’t have luck with Stillcolor. Is this an indication that you can’t actually at this point disable dither permanently on MacOS?

      A significant role here may be played by the monitor, the sensitivity level of the eyes, various image post-processing by different graphics cards, and different versions of macOS. It's difficult for me to say anything until I get my hands on such a device and can study it.

      I have SwitchResX running with “millions of colors” selected which is supposed to disable dithering

      I don't think it can reliably disable dithering, as there are dithering algorithms that don't improve color reproduction but smooth out gradients. They will still work on an 8-bit monitor when an 8-bit signal is sent to it from the graphics card.

      Some MacBook and iMac displays may have an extended color gamut. For this, KSF phosphor might be used (KSF phosphor is highly efficient at converting blue or near-UV light from LEDs into red light), which by itself puts a lot of strain on my eyes even without PWM and dithering. Such displays always appear slightly reddish to me.

      Such a display was in my old iMac 2019 (Radeon Pro 560X, 5K). I couldn't do anything with it in macOS, Linux, or Windows. I sold it.

        WhisperingWind This is unlikely because triggering temporal dithering requires access to the frame buffer. Such access is not available to regular applications, only to system components. As mentioned above, temporal dithering is primarily a GPU prerogative.

        I mean, not neccesarily, for all I know the WindowServer could be telling the GPU various things if an app requests HDR/EDR mode, or if an app requests it should be rendered with a specific color profile

        i.e. how some video editing apps and some non-native GUI toolkits are configured to map #FF0000 to full P3 red even though the surrounding apps only understand #FF0000 to be the less saturated sRGB red instead, implying each app has a different idea of what "256 shades" means.

        So possibly, when both apps are running, the graphics card (or the WindowServer itself, independent of the graphics card) decides to use dithering to ensure each app can still display what "looks like" 256 distinct shades even when both apps display simultaneously.

        In addition, I've found that some apps like Blender cause the entire desktop of LCD Apple Silicon MacBooks like M1 Air to fade to a slightly different calibration for the entire duration the app window is visible in any way (even if it's dragged all the way to a corner), and then fade back to "normal" when the app is completely minimized. This is especially noticeable with Stillcolor as the banding shift is really obvious on the desktop wallpaper. It seems to be connected to the HDR/EDR mode being activated.

        This may also invoke different graphics card functionality, without the app specifically requesting dithering etc. itself.

        Finally, color profiles on Apple Silicon Macs seem to be running at a higher bit depth than the desktop itself, even with Stillcolor. If you put a transparent black overlay over the whole screen using a standard app window, and slowly increase the opacity (e.g. BetterDisplay Overlay Dimming mode) — you will notice more prominent banding shifts than if you dim the internal display in the same manner using a color profile (e.g. BetterDisplay Color Profile Adjustments mode).

        This makes me think color profiles are always running at 10-bit and the desktop at 8-bit?

          WhisperingWind

          WhisperingWind are dithering algorithms that don't improve color reproduction but smooth out gradients. They will still work on an 8-bit monitor when an 8-bit signal is sent to it from the graphics card.

          Some MacBook and iMac displays may have an extended color gamut. For this, KSF phosphor might be used (KSF phosphor is highly efficient at converting blue or near-UV light from LEDs into red light), which by itself puts a lot of strain on my eyes even without PWM and dithering. Such displays always appear slightly reddish to me.

          Such a display was in my old iMac 2019 (Radeon Pro 560X, 5K). I couldn't do anything with it in macOS, Linux, or Windows. I sold it.

          Interesting. My iMac has the same specs except it’s 4K. I also tested a family member’s MacBook Pro 15” 2015 and while it’s moderately better than the iMac, it’s still uncomfortable. As soon as I look at my iPhone 13 I’m relaxed and it’s comfortable. I couldn’t detect PWM on the iMac or the MBP so your other possibilities make sense.

          I also wonder if my brain has adapted to the iPhone 13’s PWM and screen, and maybe it just can’t tolerate different patterns in dithering or PWM. It could be post-COVID weirdness and maybe for my personal situation, I have to try to find a screen as similar to what I’m used to for now. Or maybe it’s smaller size is more tolerable. Truly bizarre. I wish there was a neutral device to test against, but I can’t say I’ve found any sort of laptop or monitor in a computer store that is comfortable when I’ve gone to check them out. If I knew what screen manufacturer my iPhone was using, that may be a clue.

          I had a MacBook Pro M1 at the same time as this phone was purchased that was comfortable (May 2022) so I wonder if I may have to try picking up a used one and revert it to the MacOS at the time. Can’t say I’m holding my breath for MacBook Air M4’s coming out next week, but I’ll take a look at them, too.

          dev