How to enable dithering on Nvidia GeForce with Windows OS

Home Forums Help and Support How to enable dithering on Nvidia GeForce with Windows OS

This topic contains 10 replies, has 6 voices, and was last updated by  asdfage wegagag (@asdfage) 6 days, 4 hours ago.

Viewing 11 posts - 1 through 11 (of 11 total)
  • Author
    Posts
  • #15892

    Enterprise24 (@enterprise24)
    Participant
    • Offline

    Hi I am new to this forums. As everyone probably know. Dithering on Nvidia GPU only present on Quadro or GeForce with only Linux OS.

    Someone discovered how to enable dithering GeForce GPU with Windows OS by modifying registries.

    I will quote method from Guzz @ GeForce forums. He is our hero. Here is original link. https://forums.geforce.com/default/topic/1082681/geforce-drivers/is-it-possible-to-quot-port-quot-dithering-from-nvidia-x-server-to-geforce-driver-/post/5934577/#5934577

    ”Guzz” wrote:

    I managed to unlock all classes in NVWMI, so I checked how dithering works.
    It’s not true that dithering is completely disabled, by default the driver control dither state and it depend from output color depth, color format and dynamic range.
    For example, with “Full” dynamic range dithering is disabled, but with “Limited” range dithering is enabled with “Temporal” mode.

    I was right about “DitherRegistryKey”, this key is control dithering.

    How to enable/disable dithering:

    • Export your registry settings from:
      HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\nvlddmkm\State\DisplayDatabase\YOUR_DISPLAY_NAME_HERE
      or
      HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\nvlddmkm\DisplayDatabase\YOUR_DISPLAY_NAME_HERE
    • Add into your exported registry file one of the following setting:
    1. ditherState – Enabled; ditherBits – 6 bit; ditherMode – SpatialDynamic
      "DitherRegistryKey"=hex:db,01,00,00,10,00,00,00,01,00,00,00,ed,00,00,00
    2. ditherState – Enabled; ditherBits – 6 bit; ditherMode – SpatialStatic
      "DitherRegistryKey"=hex:db,01,00,00,10,00,00,00,01,01,00,01,ef,00,00,00
    3. ditherState – Enabled; ditherBits – 6 bit; ditherMode – SpatialDynamic2x2
      "DitherRegistryKey"=hex:db,01,00,00,10,00,00,00,01,01,00,02,f0,00,00,00
    4. ditherState – Enabled; ditherBits – 6 bit; ditherMode – SpatialStatic2x2
      "DitherRegistryKey"=hex:db,01,00,00,10,00,00,00,01,01,00,03,f1,00,00,00
    5. ditherState – Enabled; ditherBits – 6 bit; ditherMode – Temporal
      "DitherRegistryKey"=hex:db,01,00,00,10,00,00,00,01,01,00,04,f2,00,00,00
    6. ditherState – Enabled; ditherBits – 8 bit; ditherMode – SpatialDynamic
      "DitherRegistryKey"=hex:db,01,00,00,10,00,00,00,01,01,01,00,ef,00,00,00
    7. ditherState – Enabled; ditherBits – 8 bit; ditherMode – SpatialStatic
      "DitherRegistryKey"=hex:db,01,00,00,10,00,00,00,01,01,01,01,f0,00,00,00
    8. ditherState – Enabled; ditherBits – 8 bit; ditherMode – SpatialDynamic2x2
      "DitherRegistryKey"=hex:db,01,00,00,10,00,00,00,01,01,01,02,f1,00,00,00
    9. ditherState – Enabled; ditherBits – 8 bit; ditherMode – SpatialStatic2x2
      "DitherRegistryKey"=hex:db,01,00,00,10,00,00,00,01,01,01,03,f2,00,00,00
    10. ditherState – Enabled; ditherBits – 8 bit; ditherMode – Temporal
      "DitherRegistryKey"=hex:db,01,00,00,10,00,00,00,01,01,01,04,f3,00,00,00
    11. ditherState – Enabled; ditherBits – 10 bit; ditherMode – SpatialDynamic
      "DitherRegistryKey"=hex:db,01,00,00,10,00,00,00,01,01,02,00,f0,00,00,00
    12. ditherState – Enabled; ditherBits – 10 bit; ditherMode – SpatialStatic
      "DitherRegistryKey"=hex:db,01,00,00,10,00,00,00,01,01,02,01,f1,00,00,00
    13. ditherState – Enabled; ditherBits – 10 bit; ditherMode – SpatialDynamic2x2
      "DitherRegistryKey"=hex:db,01,00,00,10,00,00,00,01,01,02,02,f2,00,00,00
    14. ditherState – Enabled; ditherBits – 10 bit; ditherMode – SpatialStatic2x2
      "DitherRegistryKey"=hex:db,01,00,00,10,00,00,00,01,01,02,03,f3,00,00,00
    15. ditherState – Enabled; ditherBits – 10 bit; ditherMode – Temporal
      "DitherRegistryKey"=hex:db,01,00,00,10,00,00,00,01,01,02,04,f4,00,00,00
    16. ditherState – Default
      "DitherRegistryKey"=hex:db,01,00,00,10,00,00,00,00,00,01,04,f1,00,00,00
    17. ditherState – Disabled
      "DitherRegistryKey"=hex:db,01,00,00,10,00,00,00,02,00,01,04,f3,00,00,00
    • Import your new registry settings
    • Reboot or restart video driver using restart64.exe – cru-1.4.1.zip

    The only drawback is hit or miss. Sometimes it work while sometimes it doesn’t work. The reason is probably Nvidia driver rounding VCGT from 16 bit to 8 bit with certain scenario such as after monitor wake up from sleep or after computer wake up from sleep. Occasionally happen while playing games / turn on PC / restart PC / sign out and sign in. The only workaround to deal with this as far as I know is to try sign out and sign in again. But in my experience if 3  sign out and sign in doesn’t work I need to restart which again depend on luck.

    Guzz told me that his workaround is try to switching resolution to whatever and switch back again. I try it but never success. YMMV.

    #15924

    Omelette (@omelette)
    Participant
    • Offline

    Thank you! I got rid of the banding from the graphics card calibration correction curves that DisplayCAL loaded on my GPU.

    I’m using the 8 bit temporal mode. The 10 bit mode didn’t work at all. I had to restart Windows to make it work. Now it’s still working even after restarting.

    DisplayCAL was reporting “Effective LUT entry depth seems to be 8 bits”. After the fix, it says “12 bits” instead.

    I’m using a GTX 1060 (drivers 419.17) connected to a Dell U2412M (6-bit + A-FRC) via DisplayPort.

    I still suffer the banding introduced by color-managed image viewers, though. But that’s the program to blame. To properly see if this fix is working, you have to check the banding in a not color managed program, as Paint.

    • This reply was modified 7 months, 3 weeks ago by  Omelette.
    #16542

    Enterprise24 (@enterprise24)
    Participant
    • Offline

    Wow didn’t know that my post got sticky. Thanks Florian.

    A little update from my experience and several talk with other people.

    You should try Win 7 or Win 10 1607. Later version of Windows 10 starting with 1703 introduce problems.

    Win 7 = No problems (meaning once you setup dithering it will work forever).
    Win 8 / 8.1 / Win 10 1507 / 1511 = No report so far.
    Win 10 1607 = Same as Win 7.
    Win 10 1703 / 1709 / 1803 = Dithering losing effect when PC or monitor wake up from sleep. Also you must disable dithering before shutdown / restart and enable it again once you get into Windows since there is no guarantee that dithering will work on the next boot. Sometimes it will work while sometimes doesn’t. By disable it before next boot is a 100% way to guarantee that it will work next time. (credit to sonicblue83 @ GeForce forums who find this method).
    Win 10 1809 = Same as above but introduce more problem like dithering stop working randomly during gaming / watching movies.
    Win 10 1903 = Same as 1809 plus even more disaster. There is constant banding everywhere even if you not touching gamma in software level.

    Here are my final templates for reproduce problems on Windows 10 1703 and later and how to fix it.

    1.Disable dithering -> shut down -> turn on PC -> enable dithering = 100% success.
    2.Disable dithering -> restart -> enable dithering = 100% success for the following cases.
    3.Forget to disable dithering -> shut down -> turn on PC -> dithering success is depend on luck. If unlucky then need to repeat step 2.
    4.Forget to disable dithering -> restart -> dithering success is depend on luck. If unlucky then need to repeat step 2.
    5.Disable dithering -> sign out -> sign in -> enable dithering = 100% success for the following cases.
    6.Monitor wake up from sleep. Repeat step 2 or 6.
    7.PC wake up from sleep. Repeat step 2 or 6.

    (1809 and 1903 only) 8.Dithering stop working during gaming / watching movies. Need to repeat step 2.

    TLDR if you want to avoid all of these problems your best bet is to stick with Win 7 or Win 10 1607.

    #17930

    asdfage wegagag (@asdfage)
    Participant
    • Offline

    Has this been reported to Nvidia ? Perhaps they’ll roll out a fix so we can get some -reliable dither- ? 😀

    #17931

    Enterprise24 (@enterprise24)
    Participant
    • Offline

    Has this been reported to Nvidia ? Perhaps they’ll roll out a fix so we can get some -reliable dither- ? 😀

    I talk with Nvidia lv.2 support (Derrect) 3 times in the past 1.5 year and he just keep repeating I will pass along feedback to driver team blah blah blah.

    Today I just did some benchmark about performances different between dithering off and on.

    Test system.
    8 bit temporal dithering was used in this test.
    i7-8700K @ 5Ghz core & 4.8Ghz uncore
    ASRock Z370 Taichi P4.00
    2x8GB DDR4-3500 16-18-18-36-2T
    EVGA GTX 1080 Ti @ 2126 core / 12474 mem
    Corsair HX 750W
    NZXT H440 White
    Custom Water Cooling
    Windows 10 64 bit 1607
    Nvidia 430.64
    Record by ShadowPlay

    FPS and frametimes measure by MSI Afterburner and Rivatuner statistic.

    As you can see there is absolutely no different. I still wonder why Nvidia doesn’t support it officially. It doesn’t make 1080 Ti perform like 1080 when enable dithering

    If you want to see realtime side by side comparison try watching this video.

    • This reply was modified 4 months, 2 weeks ago by  Enterprise24.
    #19238

    Mike8040 (@mike8040)
    Participant
    • Offline

    How did you guys find out what the monitor device is. I got over 12 weird named entries in there and none of it is named LG34UM…?

    And isn’t easier to back up and create the dword key DitherRegistryKey just in regedit?

    Attachments:
    You must be logged in to view attached files.
    #19240

    Mike8040 (@mike8040)
    Participant
    • Offline

    Can’t edit for whatever reason… Just for the case anyone is not that geeky like I’m to know it in the first place. I found it in the other thread. One have to look into the device manager / detail tab of the monitor how its called under deviceID and guess further if there are more then one entry in the reg editor.

    #19262

    Darkmatter (@darkmatter)
    Participant
    • Offline

    For the garble of numbers, parts of it is the model number of the monitor, and part of it conforms to parts of the serial number which should be either on the back of your monitor, under it, or some other out of the way spot. Your other option would be to add the key to every monitor, but that shouldn’t be needed. The model number is probably all you need to look for. It’s near the beginning of the long string of characters and numbers.

    As for not being able to edit it, you need to right click (as I recall) and go into permissions and grant (I think it was “System”) full control over the key. You might also need to give yourself permission too. You will need to be logged in with one of Windows regular “Admin” accounts to make this change.

    Hope that helps!

    DM

    #19987

    Pollypop (@pollypop)
    Participant
    • Offline

    I am missing the state drop down under the nvlddmkm section of regedit, I am using windows 7 Build 7601

    Nvidia 1080 (non TI) – (Driver 26.21.14.3039) (driver date 4/172019)

    Edit: it appears the state drop down is missing but the display database is still available I can try to enable it by locating the display id as stated above.

    edit 2: I have successfully added the dither section into my monitors (3 of them) and I can see a pretty big jump with 10bit temporal, I will try 8 bit temporal and see if anything changes that way.

    • This reply was modified 1 month, 1 week ago by  Pollypop.
    • This reply was modified 1 month, 1 week ago by  Pollypop.
    Attachments:
    You must be logged in to view attached files.
    #19991

    Pollypop (@pollypop)
    Participant
    • Offline

    It seems through testing the best looking image that I got was using the 10bit temporal dithering keys.

    #20278

    asdfage wegagag (@asdfage)
    Participant
    • Offline

    Is there a way to enable this on optimus laptops ?, In my  -Display Database-, I only see  adapter, and connector,  which entry  is it ?

Viewing 11 posts - 1 through 11 (of 11 total)

You must be logged in to reply to this topic.

Log in or Register

Display Calibration and Characterization powered by ArgyllCMS