• Other
  • Disable Color Dither method collection

Windows - AMD Graphics

  1. The modify registry method is not working any more.
  2. So give up on Windows. You can consider to switch to Linux.

Windows - nVidia Graphics

  1. https://ledstrain.org/d/511 + https://forums.geforce.com/default/topic/1082681

Windows - Intel Graphics

  1. Use ditherig.exe to turn off color dithering. http://kawamoto.no-ip.org/henteko/myapp_en.html

Windows - Microsoft Standard VGA Adapter

  1. No eyestrain but performance is unacceptable.

Linux

  1. Recommend debian, or you can use archlinux or ubuntu all ok.

Mac OS

  1. Mac OS has color dithering which hurt eyes. Dont use it.

BSD

  1. Dont use BSD operating system, because they're not free software.

    eDenon-2 Would be great if these methods didn't have so many caveats.

    eDenon-2 For AMD Graphcis card on Windows

    Unconfirmed

    eDenon-2 For Intel Graphcis card on Windows

    Doesn't work on some hardware and someone said sleep mode breaks it? (I might have an idea how to fix it for my utility though)

    eDenon-2 For nVidia graphics card on Linux

    Doesn't work with "broken" 9xx/10xx cards.

    thanks for the effort eDenon-2 Would be great to put this in a Wiki or something. Even though this might not work 100% yet I think this is a start and people can contribute by sharing their experiences.

    If you dont play games and watch movies, then the Standard VGA Graphics Adapter is the best, it has no dithering, great for eyes.

      eDenon-2 That means need look deep into how driver (or hardware) work, and rewrite it. That's hard.

      I've been working on OS X graphics drivers on-and-off for over a year, and I'm planning to restart and moreso document my research once I have 10.14 working on my testing and main laptops.

      KM
      I can confirm that the xrandr set dither = "off" does work on amdgpu but only for linux kernels n 4.13.XX and older. they have removed the entire dither property

      • JTL and KM replied to this.

        ShivaWind So it doesn't exist for kernel 4.17? (Was trying Void Linux on my Macbook for other reasons) and noticed there was no "dither" property for the internal LVDS/LCD display.

          ShivaWind I have a very bad older AMD card, HD5450. It is unusable everywhere, even in the BIOS. It uses the older "radeon" driver and has the option "dither", which by default is off. When I switch it on and off, the screen blanks for a moment, indicating something happened. But no relief in any mode. I used it 2 weeks ago with the latest available Manjaro Kernel, which has to be something like 4.18 at least.

          eDenon-2 nouveau is for Nvidia GPUs. The xrandr --prop is not just for listing connected ports but it also lists available options and how they are named. On my card for example the option is not called dithering but "dithering mode". The option names differ between GPUs. You might want to add the user has to put options that include spaces into quotation marks. Something which people who aren't used to the command line might not know.

          Also the current Nvidia teradici section is for Nvidias proprietary closed source drivers. Nouveau is an open source driver.
          The nvidia-xconfig method is only applied after the user logged in, started his own Xorg session, and on top of that has "nvidia-xconfig --load-config-only" in his autostart. If he looks at a login manager he might look at dithering because the config is not loaded yet. With the global xorg.conf file method the dithering might be deactivated for login screens, too.

          In case the option name ever changes, go here: https://www.nvidia.com/object/unix.html, choose your driver, select "Additional Information", then README, then one of the appendixes. I think it is something like "Appendix D Xconfig options". Sometimes there are no such links or the content is missing.

          eDenon-2 If you dont play games and watch movies, then the Standard VGA Graphics Adapter is the best, it has no dithering, great for eyes.

          Are you sure that it has no dithering? Has it been confirmed somehow? I haven't seen a real difference while switching between generic VGA and Intel adapter, it might depend on graphics card / display though.

            JTL
            for amdgpu driver, access to the dither property via xrandr has been removed in kernels newer than 4.13.xx, but ukuu (https://www.omgubuntu.co.uk/2017/02/ukuu-easy-way-to-install-mainline-kernel-ubuntu) makes it easy to run mutiple kernels. I have stopped looking into this very much because the combo of e-ink and xrandr have fixed the problem for me. for people new to linux they should be aware also that the dither property may be something slightly different on different cards like dithering instead of dither. this can be found by using xrandr --prop. also the dither property must be set for each display

            (step 1 find your kernel)
            uname -r
            (if the kernel is newer than 4.13.xx then get the older version)

            (step 2 find your driver)
            sudo lshw -c video

            (step 3 find your dither property name)
            xrandr --prop
            (get the name of the dithering property from output as well as the name of the displays like (DP-1 etc)

            then
            sudo xrandr --output HDMI-1 --set "dither" "off"
            sudo xrandr --output DVI-D-1 --set "dither" "off"
            sudo xrandr --output DP-1 --set "dither" "off"

            andc Not sure. My feeling is the colors are not flickering so heavily like using AMD driver. I will search more info and at the same time looking for a way to detect dithering.

            it would be great if we could get in touch with these two guys

            • Authors: Dave Airlie
            • Alex Deucher
              */
              #include <drm/drmP.h>
              #include <drm/drm_edid.h>
              #include <drm/drm_crtc_helper.h>
              #include <drm/drm_fb_helper.h>
              #include <drm/amdgpu_drm.h>
              #include "amdgpu.h"
              #include "atom.h"
              #include "atombios_encoders.h"
              #include "atombios_dp.h"
              #include "amdgpu_connectors.h"
              #include "amdgpu_i2c.h"

            #include <linux/pm_runtime.h>

            if (property == adev->mode_info.dither_property) {
            	struct amdgpu_connector *amdgpu_connector = to_amdgpu_connector(connector);
            	/* need to find digital encoder on connector */
            	encoder = amdgpu_connector_find_encoder(connector, DRM_MODE_ENCODER_TMDS);
            	if (!encoder)
            		return 0;
            
            	amdgpu_encoder = to_amdgpu_encoder(encoder);
            
            	if (amdgpu_connector->dither != val) {
            		amdgpu_connector->dither = val;
            		amdgpu_connector_property_change_mode(&amdgpu_encoder->base);
            	}
            }

              ShivaWind You could probably git log to find their email address. Assuming your polite and not "OMG FIX DRIVER YOU WRECK MY EYES" the worst case is that they ignore you, the best case is that they try and help else given the possible time constraints of working on GPU drivers all day 😛

              9 months later
              5 months later

              I believe it is possible to disable Dithering on Mac Os for Intel Video card (I'm using MacBook pro 2018 with Intel UHD Graphic 630).

              I was researching driver's code via decompiler and found some interesting configuration parameters.

              At first, I recommend looking at what kexts are loaded. This can be done using kextstat | grep Intel command.
              Here is my output:
              https://ibb.co/tCDQKMY

              I believe that the underlying issue lays one of the *Framebuffer.kext files, decompiled code for mine com.apple.driver.AppleIntelCFLGraphicsFramebuffer looks like:
              https://ibb.co/8YGC1Wh

              AppleIntelFramebufferController::getFeatureControl method seems to load data from underlying Info.Plist

              All you need to do in order to disable dithering is simply add a new parameter to the section
              IOKitPersonalities->AppleIntelFramebufferController->FeatureControl
              in file /System/Library/Extensions/AppleIntelCFLGraphicsFramebuffer.kext/Contents/Info.plist

              Right-click on FeatureControl section in the xcode, and new Number parameter.
              name: DitherDisable
              value: 1

              Here are the contents of my Info.Plist file (with new parameter included):
              https://ibb.co/dgqK0MS

              Side note: in order to actually make changes to plist inside kext, you need to disable security protection
              https://apple.stackexchange.com/a/251559/320465

              In short, reboot mac, holding Command+R until recovery utility is loaded.
              Open terminal there (from top menu), and type:
              csrutil disable

              Restart your mac normally. Now you need to add more permissions to be able to edit that file:

              cd /System/Library/Extensions/AppleIntelCFLGraphicsFramebuffer.kext/
              sudo chown $USER Contents/
              cd Contents
              sudo chown $USER Info.plist

              Edit plist file as shown above in xcode.

              Then I'd like to return file ownership back to root user:
              sudo chown root Info.plist
              cd ..
              sudo chown root Contents/

              Let me know if your eyes are better now. For me it seems to help a lot, but need few days.

              Here is proof that colors are different after fix (banding appeared on intel):
              https://ibb.co/pR807tD
              https://ibb.co/PY4PZ71

              Note: this will only work for Intel as for now. To check active video card - use activity monitor->Energy tab
              I was trying to apply similar fix for integrated AMD video card, but stuck on apple logo screen.

                And now I stuck with AMD card dithering. Whenever graphic switches to High-perf (opening Photoshop, Sketch, or simply changing power saving option to Automatic graphics switching), I notice immediate nausea. It is not as bad as with intel, but still not comfortable.

                It is really hard to explain, it is a sensation that letters are jumping, even when screen image is static. Like visual noise.

                I wonder if someone can shed a light of what this could be, inside AMDFramebuffer.kext
                https://ibb.co/pPwDFhf

                I'm particularly interested in CFG_DEF_DITH. I tried to add this parameter in Info.plist, without success.

                It seems for me that AMD driver configuration is split and duplicated among several kext, and that is hard to glue together.

                Gleb,

                is it possible make same on LInux? Which tool can I use?

                dev