Driver-level sRGB emulation (gamut clamp)

Viewing 18 posts - 21 through 38 (of 38 total)

Buying a monitor? Please refer to this post before purchasing.
New user? Register here.


  • Author
    Posts
  • #73476
    falkan

      G51C without profile
      G51C with profile

      Please don’t bother with the images quality. Does that seem normal to you?

      When you enable freesync, it disables response time selection, I am guessing it has some kind of auto response time under freesnyc because on high refresh rates it has some smearing but when it dips down to 40’s, there is not extreme overshoot, as if it dynamically sets up the response time according to FPS. Interesting results, really hard to decide if I can live by with VA disadvantages when they are this much inconsistent.

      #73479
      PCM2

        If the labels I’ve given the image links in your post are correct (you didn’t include these, so I have assumed this is what is being shown) then yes that’s what I’d expect to see. It’s exactly as I explained on the previous page – you’ve reduced the saturation and hence compressed the RGB range involved for the transitions. Test UFO is particularly good at capturing this effect. If you observe actual in-game examples you will likely come across examples of more obvious ‘smeary’ trailing even with the gamut restriction, because you’ll be observing darker background shades plus very bright shades such as white which won’t be affected by the gamut modification. There will still be some in-game transitions which are sped up due to the gamut clamp in a similar way to shown with Test UFO, however.

        There could be some rudimentary variable overdrive in play, it’s not uncommon for Samsung Odyssey models to include this. Or it could just be using a setting which includes a relatively low level of acceleration, so overshoot is relatively low regardless of refresh rate. I’ve seen this on a few VA models (such as the AOC CQ32G3SU).

        #73482
        falkan

          Yes labels are correct, thanks for the edits.

          I’ve tested and confirmed that you were right, it’s either low level acceleration or pretty rudimentary variable overdrive. G51C wins here at low fps(40-70) because vg27aq needs 0 trace free for not having overshoot.

          Do you think in the long run I can get used to this level of undersaturation and smearing/overshoot?

          G51C wins on blacks, min brightness, a wider range in which a selected overdrive fits,
          vg27aq wins on ghosting, strobing, hdr brightness(but again elevated black point), and you know what you see on the screen is more probably what you need to see, on VA panels I always feel suspicious.

          #73481
          savingstimes

            Something I’ve been wondering about this tool, or if there is alternative, but is there a way to partially clamp the gamut? As in for example you don’t to clamp all the way down to sRGB and want some over-saturation at the expense of accuracy?

            For example let’s say you have a display that goes to 140% sRGB but you find that too over saturated and inaccurate but still want something above 100% sRGB. Could you clamp it somehow to 120% sRGB?

            #73487
            PCM2

              falkan,
              That’s a tricky one. I’m inclined to say that if these issues bug you now and you feel equally annoyed after a week or so using the monitor it’s probably going to annoy you longer term. I find people can usually adapt a bit to those sorts of things, but only if they’re a bit out from their usual preferences rather than majorly out. So if you find the undersaturation and response time issues obvious rather than just slight they’ll probably continue to bug you.

              savingstimes,
              That would be cool and something I thought would be neat as well, but unfortunately the novideo_sRGB tool doesn’t allow that to be customised and I’m not aware of an alternative tool that would. I’ve only seen that sort of thing customisable on monitors with hardware calibration (LG Calibration Studio etc.)

              #73499
              Taisho

                novideo_srgb gives the possibility to set the clamp to “Display P3” or “Adobe RGB”. P3 is about 126% of sRGB while Adobe is about 135%.

                adobe vs dci_p3

                #73501
                PCM2

                  Indeed and in my testing those clamps work well (provided EDID information is decent). It’s just a shame you can’t set it some way between those colour spaces and sRGB, if you want just a bit of an edge in vibrancy without as much oversaturation as those colour spaces can provide for sRGB content.

                  #75831
                  anyone

                    Hey PCM2, thanks for your article! I’d like to ask you to do some research on this topic if possible, because you’re likely to have the means and the results will be valuable both for AMD and NVIDIA GPU users as it’s related to EDID overrides.

                    We can export wide color gamut display’s EDID data using CRU. This data has rXY, bXY, gXY values for sRGB color space. Then we can open it in AW EDID Editor and edit rXY, bXY, gXY values to match wide color gamut color space such as Display P3. Then we can then import edited EDID data using CRU back to display as an EDID override. If we then use sRGB emulation mode provided by AMD Software control panel (as described in your article), theoretically we should clamp display output to Display P3.

                    I’ve done this and it definitely works but I have no idea how accurate it is because I’ve got no colorimeter and no display with sRGB hardware switch (I’ve got built-in laptop display with 99,88% DCI-P3 and 75% BT.2020 coverage, my GPU is by AMD).

                    So I’ve tried using sRGB values that I took from default Windows “C:\Windows\System32\spool\drivers\color\sRGB Color Space Profile.icm” as EDID override. I expected the colors to look the same in both regular and sRGB emulation mode of my AMD GPU driver one EDID override is applied. However the results don’t match while being relatively similar (I notice slight white point shift to a colder color when using sRGB emulation in this mode, or maybe it’s some color channels shift). This makes me think AMD Software does some adjustments to EDID values before using them in sRGB emulation mode or maybe AMD driver in non-emulation mode uses 3D LUT for colors (AFAIK EDID override provides 1D LUT).

                    I’d like to ask you to research the method and update the article. Here’s a short step-by-step write-up in case you need it.

                    Speaking of AMD’s built-in sRGB emulation specifically, ideally it would be to test EDID value override both for Display P3 and sRGB rgbXY values so we could get the idea if AMD’s built-in solution actually adjusts something for it’s sRGB emulation mode. Finally, a test of AMD sRGB emulation against novideo_srgb sRGB emulation with the same display but different GPU will help us know what sRGB emulation is most accurate. Maybe we can then use this data to make adjustments to source color space values so the target color space gets matched correctly in sRGB emulation.

                    #75835
                    PCM2

                      For most people there’s a strong preference for simplicity when it comes to emulating colour spaces and unfortunately anything that involves CRU is off the table. Although what you present there is interesting, it goes beyond the scope of the article. It’s also not something I’m interested in exploring further at the moment.

                      #75838
                      anyone

                        This is fine, I’ve tested with my own means: got dwm_lut working, then created 3D LUT via DisplayCAL‘s standalone Create 3D LUT using ArgyllCMS‘ default sRGB ICC profile (it’s ICC matches Windows’s sRGB ICM but features some extra bits for accurate most precise 65×65 3D LUT generation) with various settings, then turned on AMD’s sRGB emulation and applied my 3D LUTs one by one to figure out what AMD does (LUTs were created with various settings). So after some trial it turned out the 3D LUT created with the following tone curve and rendering intent setup perfectly matches colors produced by sRGB emulation of AMD GPU driver:

                        https://i.ibb.co/rc4syYq/Capture.png

                        Unfortunately, this means EDID override method requires further tweaking since wide color gamut profile such as Display P3 looks completely different (and correct) once applied via dwm_lut and 3D LUT created via Create a 3D LUT from ArgyllCMS‘ bundled ICC repository.

                        #75846
                        anyone

                          It turned out driver-level color space clamp for AMD GPUs (the method I was trying to implement by editing EDID by hand) has been already implemented for some time by dantmnf in AMDColorTweaks (also known as Agricultural Machinery Display Color Tweaks). It allows to use ICC profile for AMD GPU to clamp display output to sRGB, Display P3 or any other color space. Just remember to first turn on AMD Software sRGB emulation (Display → Custom color On, Color Temperature Control Off) and then make a backup of your display’s ICC via DisplaCAL → File → Create profile from EDID… function. And probably it’s a good idea to backup EDID via CRU. You can then experiment with AMDColorTweaks, just remember two things:

                          1) since most displays are “fake sRGB” and actually specify gamma 2.2 as default in EDID (or at least that’s what DisplayCAL did for my display), you have either to input Parametric EOTF values of sRGB by hand to get sRGB curve or edit your display’s “default” ICC (the one you got generated via DisplayCAL) curve to sRGB curve (here’s a guide) (it’s worth noting the difference between gamma 2.2 and sRGB is subtle but it’s noticeable on wide color gamut display in darker tones, you can verify it yourself, take my word or see this comment by DisplayCAL developer);

                          2) you have to read white point of your EDID and set it manually if you’re going to use a generic profile like the Display P3 ICC file from color.org (otherwise your display will have blue/green tint).
                          This is an awesome tool that allows to clamp display output to desired color space on the go instantly (one your ICC profiles are ready) and I cannot recommend it enough. I have yet to test if the applied profile can be carried over by exporting/importing EDID via CRU, but that’s a different story.

                          #75854
                          anyone

                            Upon further research and testing I came to conclusion that, unfrotunately, it appears the AMDColorTweaks is broken at the moment. I als found out AMD Software sRGB emulation does NOT provide a valid sRGB emulation (it fails both tests), while dwm_lut approach with properly-generated 3D LUT provides a valid sRGB output (or Gamma 2.2, 2.4, etc. as you specify it on creatin 3D LUT via displaycal-3dlut-maker.exe). Here’s a guide on creating 3D LUT for your display even if you don’t have a colorimeter (however it’s highly recommended to make a calibrated profile too, you can hire someone to do that because you will only need ICC for creating 3D LUT).

                            Update:
                            AMDColorTweaks works extremely well actually (according to my comparison to dwm_lut by eyeballing, the result is the same), it’s just lacking some guidance and only outputs sRGB TRC (like you kind of can’t* get Gamma 2.2 profile to work). So here’s what you have to do to clamp wide color gamut display to sRGB or Display P3 color space:
                            1. DisplayCAL > File > Create profile from EDID… > Save as Display.icc and don’t install (or you can use your display’s calibrated profile)
                            2. AMDColorTweaks > Destination > ICC Profile > Load > Load Display.icc
                            3. AMDColorTweaks > Source > Primaries > Select sRGB / Rec. 709 from drop-down for clamping to sRGB or select Custom and input RGB x y of Display P3 by hand for clamping to Display P3
                            4. AMDColorTweaks > Source > Primaries > White point > Select Custom from drop-down and input White x y the same as you see in Destination White
                            5. Apply

                            * Note: Since I don’t have a colorimeter and only use test images from ACES forum (fist test from previous message), I may be wrong, but according to test you can actually get Gamma 2.2 with AMDColorTweaks by setting — counter-intuitively — Transfer for Destination manually (as step 5 before hitting Apply) to sRGB tone response curve (TRC) values (Destination > Transfer > Edit > Parametric EOTF): 0.0031308, 12.92, 0.055, 0.055, 2.4. The darker shades will become slightly darker and the test images will show that output is Gamma 2.2.

                            #75856
                            PCM2

                              To clarify in case anybody is skim-reading the recent posts and is slightly confused. ‘sRGB emulation‘ usually refers to clamping the colour gamut close to sRGB, but does not necessitate changes to gamma. The AMD toggle, novideo_sRGB tool (default behaviour) and in my experience most sRGB settings on monitors don’t change the gamma behaviour from the default, which is intended to follow the ‘2.2 curve’ rather than following the ‘sRGB curve’. I don’t personally think this is a bad thing as the gamma target people go for is not set in stone. It depends on their own preferences, the creative intent and lighting environment. I know many image and video editors who loathe ‘sRGB gamma’ because it has significant uplift of dark shades which looks artificial and goes beyond what the creators would see in their scenes in real life. The more blended appearance of ‘2.2’ gamma can be deemed more appropriate in that case – but for others that blending goes too far and some details can be masked (more so on some monitors for contrast reasons and according to related parameters) or they wish to specifically work on fine details and reveal and potentially eliminate ‘noise’ or other artifacts. sRGB emulation (gamut clamping) is also used for content consumption where elevated dark shades and the ‘unblended appearance’ of sRGB gamut could be a nuisance, for example bringing out noise in photos and videos too strongly and making dark scenes there or in games appear with an unnatural-looking uplift.

                              #75865
                              jbennett360

                                Has anyone looked into or tried the Windows Auto Colour Management?

                                https://support.microsoft.com/en-us/windows/auto-color-management-in-windows-11-64a4de7f-9c93-43ec-bdf1-3b12ffa0870b

                                I’ve had a brief read and Google and it sounds like it clamps everything to its intended colour space? So everything would be sRGB unless specified otherwise?

                                #75867
                                PCM2

                                  That’s my understanding of what it would do. I’ve yet to test it as it appears to only in some insider builds of Windows 11 and isn’t a core feature yet. Or they’ve only implemented it on a very small subset of monitors as I always look out for it when reviewing monitors and have not yet seen this feature available.

                                  #75868
                                  jbennett360

                                    It’s there for me on a new system, using a Dell 2515H. Not really needed on that setup!

                                    #75870
                                    PCM2

                                      Really odd, I’ve not seen it on any recent monitor on my system. Which has the latest Windows 11 update that was pushed to it (I just rechecked). If my system isn’t getting it for whatever reason, it’s definitely not a widepsread Windows 11 feature yet. Another thing to be aware of with ACM is that it will cause even colour-aware applications to ignore any applied ICC profiles, even if you happen to have calibrated a monitor with ACM active. The workaround is a bit awkward (though at least there is one) as you have to individually apply ‘legacy colour management’ to any application you want to use ICC profiles. I would like to test it as a simple gamut clamp and see how it works, but I simply can’t as I don’t seem to have the feature.

                                      #75918
                                      kamil950

                                        I’m sorry but I’m not sure how to do sRGB clamp based on primaries from the ‘Test Settings’ ICC profile (from AOC 24G2SPU review on pcmonitors.info) on AMD GPU. Could somebody explain this please? Should I do these steps below (‘sRGB / Rec. 709’ option, not Display P3) or should I do something different?

                                        2. AMDColorTweaks > Destination > ICC Profile > Load > Load Display.icc
                                        3. AMDColorTweaks > Source > Primaries > Select sRGB / Rec. 709 from drop-down for clamping to sRGB or select Custom and input RGB x y of Display P3 by hand for clamping to Display P3
                                        4. AMDColorTweaks > Source > Primaries > White point > Select Custom from drop-down and input White x y the same as you see in Destination White
                                        5. Apply

                                        BTW there is some bug in AMD Control Panel. I can’t disable ‘Custom Color’ option. It’s doing sRGB clamp based on EDID primaries even if slider is set to ‘Disabled’. EDID information is wonky or not accurate on my monitor (it ‘cut out some blue shades with skew (overextension) into the purple region’).

                                        I’m not sure but if I set both ‘Custom Color’ and ‘Color Temperature Control’ to ‘Enabled’ and keep default ‘6500K’ ‘Color Temperature’ it’s giving wide gamut (not sRGB clamp).

                                        How should I set this up in AMD Control Panel before (and after) using AMDColorTweaks tool?

                                        (It was less difficult when I had NVIDIA GPU and could use ‘novideo_srgb’ tool. :))

                                      Viewing 18 posts - 21 through 38 (of 38 total)
                                      • You must be logged in to reply to this topic.