ledoge / novideo_srgb

Calibrate monitors to sRGB or other color spaces on NVIDIA GPUs, based on EDID data or ICC profiles
GNU General Public License v3.0
1.03k stars 39 forks source link

Linux version? (Please) #2

Open Probotector opened 3 years ago

Probotector commented 3 years ago

This tool is amazing, they can make a version for Linux, compatible with the AUR repository?

Thanks a lot, they saved my monitor xD

ledoge commented 3 years ago

Not sure if this is doable – I believe the NVIDIA drivers expose a CTM (color transform matrix) property that can be set through xrandr, but I don't even know if it's gamma-aware. If you want to try it, please send me the output of xrandr --verbose on your machine and the primary coordinates reported by your monitor – either by generating a synthetic ICC profile from EDID data using DisplayCAL or by copying the values from/taking a screenshot of the Info window of this tool.

Probotector commented 3 years ago

Screenshot_20210824_181022 DELL S2721DGF.zip

Screen 0: minimum 8 x 8, current 2560 x 1440, maximum 32767 x 32767 DVI-D-0 disconnected (normal left inverted right x axis y axis) Identifier: 0x1bd Timestamp: 9497 Subpixel: unknown Clones:
CRTCs: 0 1 2 3 Transform: 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 filter: CTM: 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 CscMatrix: 65536 0 0 0 0 65536 0 0 0 0 65536 0 BorderDimensions: 4 supported: 4 Border: 0 0 0 0 range: (0, 65535) SignalFormat: TMDS supported: TMDS ConnectorType: DVI-D ConnectorNumber: 0 _ConnectorLocation: 0 non-desktop: 0 supported: 0, 1 HDMI-0 disconnected (normal left inverted right x axis y axis) Identifier: 0x1be Timestamp: 9497 Subpixel: unknown Clones:
CRTCs: 0 1 2 3 Transform: 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 filter: CTM: 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 CscMatrix: 65536 0 0 0 0 65536 0 0 0 0 65536 0 BorderDimensions: 4 supported: 4 Border: 0 0 0 0 range: (0, 65535) SignalFormat: TMDS supported: TMDS ConnectorType: HDMI ConnectorNumber: 3 _ConnectorLocation: 3 non-desktop: 0 supported: 0, 1 HDMI-1 disconnected (normal left inverted right x axis y axis) Identifier: 0x1bf Timestamp: 9497 Subpixel: unknown Clones:
CRTCs: 0 1 2 3 Transform: 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 filter: CTM: 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 CscMatrix: 65536 0 0 0 0 65536 0 0 0 0 65536 0 BorderDimensions: 4 supported: 4 Border: 0 0 0 0 range: (0, 65535) SignalFormat: TMDS supported: TMDS ConnectorType: HDMI ConnectorNumber: 4 _ConnectorLocation: 4 non-desktop: 0 supported: 0, 1 DP-0 disconnected (normal left inverted right x axis y axis) Identifier: 0x1c0 Timestamp: 9497 Subpixel: unknown Clones:
CRTCs: 0 1 2 3 Transform: 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 filter: CTM: 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 CscMatrix: 65536 0 0 0 0 65536 0 0 0 0 65536 0 BorderDimensions: 4 supported: 4 Border: 0 0 0 0 range: (0, 65535) SignalFormat: DisplayPort supported: DisplayPort ConnectorType: DisplayPort ConnectorNumber: 2 _ConnectorLocation: 2 non-desktop: 0 supported: 0, 1 DP-1 disconnected (normal left inverted right x axis y axis) Identifier: 0x1c1 Timestamp: 9497 Subpixel: unknown Clones:
CRTCs: 0 1 2 3 Transform: 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 filter: CTM: 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 CscMatrix: 65536 0 0 0 0 65536 0 0 0 0 65536 0 BorderDimensions: 4 supported: 4 Border: 0 0 0 0 range: (0, 65535) SignalFormat: TMDS supported: TMDS ConnectorType: DisplayPort ConnectorNumber: 2 _ConnectorLocation: 2 non-desktop: 0 supported: 0, 1 DP-2 connected primary 2560x1440+0+0 (0x1c4) normal (normal left inverted right x axis y axis) 597mm x 336mm Identifier: 0x1c2 Timestamp: 9497 Subpixel: unknown Gamma: 1.0:1.1:1.0 Brightness: 1.0 Clones:
CRTC: 0 CRTCs: 0 1 2 3 Transform: 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 filter: CTM: 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 CscMatrix: 65536 0 0 0 0 65536 0 0 0 0 65536 0 EDID: 00ffffffffffff0010acd9414c4d3741 211e0104b53c22783b8cb5af4f43ab26 0e5054a54b00d100d1c0b300a9408180 8100714fe1c0565e00a0a0a029503020 350055502100001a000000ff00314e38 565a31330a2020202020000000fc0044 454c4c205332373231444746000000fd 0030a5fafa41010a2020202020200159 020337f1513f101f2005140413121103 02010607151623090707830100006d1a 0000020b30a5000f623d623de305c000 e606050162623ef4fb0050a0a0285008 20680055502100001a40e7006aa0a067 500820980455502100001a6fc200a0a0 a055503020350055502100001a000000 000000000000000000000000000000a5 BorderDimensions: 4 supported: 4 Border: 0 0 0 0 range: (0, 65535) SignalFormat: DisplayPort supported: DisplayPort ConnectorType: DisplayPort ConnectorNumber: 1 _ConnectorLocation: 1 non-desktop: 0 supported: 0, 1 2560x1440 (0x1c3) 241.500MHz +HSync -VSync +preferred h: width 2560 start 2608 end 2640 total 2720 skew 0 clock 88.79KHz v: height 1440 start 1443 end 1448 total 1481 clock 59.95Hz 2560x1440 (0x1c4) 645.000MHz +HSync -VSync *current h: width 2560 start 2568 end 2600 total 2640 skew 0 clock 244.32KHz v: height 1440 start 1446 end 1454 total 1480 clock 165.08Hz 2560x1440 (0x1c5) 592.000MHz +HSync -VSync h: width 2560 start 2568 end 2600 total 2666 skew 0 clock 222.06KHz v: height 1440 start 1465 end 1473 total 1543 clock 143.91Hz 2560x1440 (0x1c6) 497.750MHz +HSync -VSync h: width 2560 start 2608 end 2640 total 2720 skew 0 clock 183.00KHz v: height 1440 start 1443 end 1448 total 1525 clock 120.00Hz 2048x1152 (0x1c7) 162.000MHz +HSync +VSync h: width 2048 start 2074 end 2154 total 2250 skew 0 clock 72.00KHz v: height 1152 start 1153 end 1156 total 1200 clock 60.00Hz 1920x1200 (0x1c8) 193.250MHz -HSync +VSync h: width 1920 start 2056 end 2256 total 2592 skew 0 clock 74.56KHz v: height 1200 start 1203 end 1209 total 1245 clock 59.88Hz 1920x1080 (0x1c9) 296.700MHz +HSync +VSync h: width 1920 start 2008 end 2052 total 2200 skew 0 clock 134.86KHz v: height 1080 start 1084 end 1089 total 1125 clock 119.88Hz 1920x1080 (0x1ca) 148.500MHz +HSync +VSync h: width 1920 start 2008 end 2052 total 2200 skew 0 clock 67.50KHz v: height 1080 start 1084 end 1089 total 1125 clock 60.00Hz 1920x1080 (0x1cb) 148.350MHz +HSync +VSync h: width 1920 start 2008 end 2052 total 2200 skew 0 clock 67.43KHz v: height 1080 start 1084 end 1089 total 1125 clock 59.94Hz 1920x1080 (0x1cc) 148.500MHz +HSync +VSync h: width 1920 start 2448 end 2492 total 2640 skew 0 clock 56.25KHz v: height 1080 start 1084 end 1089 total 1125 clock 50.00Hz 1920x1080 (0x1cd) 74.180MHz +HSync +VSync h: width 1920 start 2558 end 2602 total 2750 skew 0 clock 26.97KHz v: height 1080 start 1084 end 1089 total 1125 clock 23.98Hz 1680x1050 (0x1ce) 146.250MHz -HSync +VSync h: width 1680 start 1784 end 1960 total 2240 skew 0 clock 65.29KHz v: height 1050 start 1053 end 1059 total 1089 clock 59.95Hz 1600x1200 (0x1cf) 162.000MHz +HSync +VSync h: width 1600 start 1664 end 1856 total 2160 skew 0 clock 75.00KHz v: height 1200 start 1201 end 1204 total 1250 clock 60.00Hz 1280x1024 (0x1d0) 135.000MHz +HSync +VSync h: width 1280 start 1296 end 1440 total 1688 skew 0 clock 79.98KHz v: height 1024 start 1025 end 1028 total 1066 clock 75.02Hz 1280x1024 (0x1d1) 108.000MHz +HSync +VSync h: width 1280 start 1328 end 1440 total 1688 skew 0 clock 63.98KHz v: height 1024 start 1025 end 1028 total 1066 clock 60.02Hz 1280x800 (0x1d2) 83.500MHz -HSync +VSync h: width 1280 start 1352 end 1480 total 1680 skew 0 clock 49.70KHz v: height 800 start 803 end 809 total 831 clock 59.81Hz 1280x720 (0x1d3) 74.180MHz +HSync +VSync h: width 1280 start 1390 end 1430 total 1650 skew 0 clock 44.96KHz v: height 720 start 725 end 730 total 750 clock 59.94Hz 1280x720 (0x1d4) 74.250MHz +HSync +VSync h: width 1280 start 1720 end 1760 total 1980 skew 0 clock 37.50KHz v: height 720 start 725 end 730 total 750 clock 50.00Hz 1152x864 (0x1d5) 108.000MHz +HSync +VSync h: width 1152 start 1216 end 1344 total 1600 skew 0 clock 67.50KHz v: height 864 start 865 end 868 total 900 clock 75.00Hz 1024x768 (0x1d6) 78.750MHz +HSync +VSync h: width 1024 start 1040 end 1136 total 1312 skew 0 clock 60.02KHz v: height 768 start 769 end 772 total 800 clock 75.03Hz 1024x768 (0x1d7) 65.000MHz -HSync -VSync h: width 1024 start 1048 end 1184 total 1344 skew 0 clock 48.36KHz v: height 768 start 771 end 777 total 806 clock 60.00Hz 800x600 (0x1d8) 49.500MHz +HSync +VSync h: width 800 start 816 end 896 total 1056 skew 0 clock 46.88KHz v: height 600 start 601 end 604 total 625 clock 75.00Hz 800x600 (0x1d9) 40.000MHz +HSync +VSync h: width 800 start 840 end 968 total 1056 skew 0 clock 37.88KHz v: height 600 start 601 end 605 total 628 clock 60.32Hz 720x576 (0x1da) 27.000MHz -HSync -VSync h: width 720 start 732 end 796 total 864 skew 0 clock 31.25KHz v: height 576 start 581 end 586 total 625 clock 50.00Hz 720x480 (0x1db) 27.000MHz -HSync -VSync h: width 720 start 736 end 798 total 858 skew 0 clock 31.47KHz v: height 480 start 489 end 495 total 525 clock 59.94Hz 640x480 (0x1dc) 31.500MHz -HSync -VSync h: width 640 start 656 end 720 total 840 skew 0 clock 37.50KHz v: height 480 start 481 end 484 total 500 clock 75.00Hz 640x480 (0x1dd) 25.175MHz -HSync -VSync h: width 640 start 656 end 752 total 800 skew 0 clock 31.47KHz v: height 480 start 490 end 492 total 525 clock 59.94Hz 640x480 (0x1de) 25.170MHz -HSync -VSync h: width 640 start 656 end 752 total 800 skew 0 clock 31.46KHz v: height 480 start 490 end 492 total 525 clock 59.93Hz DP-3 disconnected (normal left inverted right x axis y axis) Identifier: 0x1df Timestamp: 9497 Subpixel: unknown Clones:
CRTCs: 0 1 2 3 Transform: 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 filter: CTM: 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 CscMatrix: 65536 0 0 0 0 65536 0 0 0 0 65536 0 BorderDimensions: 4 supported: 4 Border: 0 0 0 0 range: (0, 65535) SignalFormat: TMDS supported: TMDS ConnectorType: DisplayPort ConnectorNumber: 1 _ConnectorLocation: 1 non-desktop: 0 supported: 0, 1

ledoge commented 3 years ago

Thanks, try this:

xrandr --output DP-2 --set CscMatrix 54650,11079,-194,0,3043,62152,340,0,815,3259,61460,0

I'm not sure if I got the format right, but this should at least do... something.

ledoge commented 3 years ago

If it produces weird results, you could also try this tool: https://cgit.freedesktop.org/~hwentland/color-demo-app/

Compile it and run it like ./cmdemo -o DP-2 -c 0.833903253:0.169066459:-0.0029697225:0.046433419:0.948365331:0.00520124193:0.0124420347:0.0497391634:0.937818825 – I think that should work.

Probotector commented 3 years ago

The command line works perfect, thank you so much, I added the line in my bash profile and works OK.

Please, another favor, I have a second monitor , can you do the same for this monitor again?

Dell AW2721D.zip

Captura

Screen 0: minimum 8 x 8, current 2560 x 1440, maximum 32767 x 32767 DVI-D-0 disconnected (normal left inverted right x axis y axis) Identifier: 0x1bd Timestamp: 55912 Subpixel: unknown Clones: CRTCs: 0 1 2 3 Transform: 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 filter: CTM: 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 CscMatrix: 65536 0 0 0 0 65536 0 0 0 0 65536 0 BorderDimensions: 4 supported: 4 Border: 0 0 0 0 range: (0, 65535) SignalFormat: TMDS supported: TMDS ConnectorType: DVI-D ConnectorNumber: 0 _ConnectorLocation: 0 non-desktop: 0 supported: 0, 1 HDMI-0 disconnected (normal left inverted right x axis y axis) Identifier: 0x1be Timestamp: 55912 Subpixel: unknown Clones: CRTCs: 0 1 2 3 Transform: 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 filter: CTM: 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 CscMatrix: 65536 0 0 0 0 65536 0 0 0 0 65536 0 BorderDimensions: 4 supported: 4 Border: 0 0 0 0 range: (0, 65535) SignalFormat: TMDS supported: TMDS ConnectorType: HDMI ConnectorNumber: 3 _ConnectorLocation: 3 non-desktop: 0 supported: 0, 1 DP-0 connected primary 2560x1440+0+0 (0x1c0) normal (normal left inverted right x axis y axis) 603mm x 347mm Identifier: 0x1bf Timestamp: 55912 Subpixel: unknown Gamma: 1.0:1.0:1.0 Brightness: 1.0 Clones: CRTC: 0 CRTCs: 0 1 2 3 Transform: 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 filter: CTM: 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 CscMatrix: 65536 0 0 0 0 65536 0 0 0 0 65536 0 EDID: 00ffffffffffff0010ac79a14c4d3930 2e1e0104b53c23783bc041ac5044af26 0d505421080001010101010101010101 010101010101055f00a0a0a033503020 35005b5b2100001a000000ff0023484c 41594d7867774141504c000000fd0001 f0ffff6a010a202020202020000000fc 0044656c6c20415732373231440a0256 020320f12309070183010000654b0400 0101e305c000e2006ae606050178601f 5aa000a0a0a04650302035005b5b2100 001a6fc200a0a0a05550302035005b5b 2100001a79e90082a0a0675008203500 5b5b2100001a00000000000000000000 00000000000000000000000000000000 00000000000000000000000000000064 70137903000f000aa4140e0e07012045 000002010d31cd1a503f04af63e20c01 455403012802510104ff099f002f801f 009f05910002000400ca9c0104ff099f 002f801f009f05b20002000400000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000005290 BorderDimensions: 4 supported: 4 Border: 0 0 0 0 range: (0, 65535) SignalFormat: DisplayPort supported: DisplayPort ConnectorType: DisplayPort ConnectorNumber: 4 _ConnectorLocation: 4 non-desktop: 0 supported: 0, 1 2560x1440 (0x1c0) 243.250MHz +HSync -VSync *current +preferred h: width 2560 start 2608 end 2640 total 2720 skew 0 clock 89.43KHz v: height 1440 start 1443 end 1448 total 1491 clock 59.98Hz 2560x1440 (0x1c1) 1056.750MHz +HSync -VSync h: width 2560 start 2608 end 2640 total 2720 skew 0 clock 388.51KHz v: height 1440 start 1443 end 1448 total 1619 clock 239.97Hz 2560x1440 (0x1c2) 862.750MHz +HSync -VSync h: width 2560 start 2608 end 2640 total 2720 skew 0 clock 317.19KHz v: height 1440 start 1443 end 1448 total 1586 clock 199.99Hz 2560x1440 (0x1c3) 597.690MHz +HSync -VSync h: width 2560 start 2568 end 2600 total 2690 skew 0 clock 222.19KHz v: height 1440 start 1443 end 1448 total 1543 clock 144.00Hz 2560x1440 (0x1c4) 497.750MHz +HSync -VSync h: width 2560 start 2608 end 2640 total 2720 skew 0 clock 183.00KHz v: height 1440 start 1443 end 1448 total 1525 clock 120.00Hz 2560x1440 (0x1c5) 410.500MHz +HSync -VSync h: width 2560 start 2608 end 2640 total 2720 skew 0 clock 150.92KHz v: height 1440 start 1443 end 1448 total 1510 clock 99.95Hz 1024x768 (0x1c6) 65.000MHz -HSync -VSync h: width 1024 start 1048 end 1184 total 1344 skew 0 clock 48.36KHz v: height 768 start 771 end 777 total 806 clock 60.00Hz 800x600 (0x1c7) 40.000MHz +HSync +VSync h: width 800 start 840 end 968 total 1056 skew 0 clock 37.88KHz v: height 600 start 601 end 605 total 628 clock 60.32Hz 640x480 (0x1c8) 25.175MHz -HSync -VSync h: width 640 start 656 end 752 total 800 skew 0 clock 31.47KHz v: height 480 start 490 end 492 total 525 clock 59.94Hz DP-1 disconnected (normal left inverted right x axis y axis) Identifier: 0x1c9 Timestamp: 55912 Subpixel: unknown Clones: CRTCs: 0 1 2 3 Transform: 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 filter: CTM: 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 CscMatrix: 65536 0 0 0 0 65536 0 0 0 0 65536 0 BorderDimensions: 4 supported: 4 Border: 0 0 0 0 range: (0, 65535) SignalFormat: TMDS supported: TMDS ConnectorType: DisplayPort ConnectorNumber: 4 _ConnectorLocation: 4 non-desktop: 0 supported: 0, 1 DP-2 disconnected (normal left inverted right x axis y axis) Identifier: 0x1ca Timestamp: 55912 Subpixel: unknown Clones: CRTCs: 0 1 2 3 Transform: 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 filter: CTM: 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 CscMatrix: 65536 0 0 0 0 65536 0 0 0 0 65536 0 BorderDimensions: 4 supported: 4 Border: 0 0 0 0 range: (0, 65535) SignalFormat: DisplayPort supported: DisplayPort ConnectorType: DisplayPort ConnectorNumber: 2 _ConnectorLocation: 2 non-desktop: 0 supported: 0, 1 DP-3 disconnected (normal left inverted right x axis y axis) Identifier: 0x1cb Timestamp: 55912 Subpixel: unknown Clones: CRTCs: 0 1 2 3 Transform: 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 filter: CTM: 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 CscMatrix: 65536 0 0 0 0 65536 0 0 0 0 65536 0 BorderDimensions: 4 supported: 4 Border: 0 0 0 0 range: (0, 65535) SignalFormat: TMDS supported: TMDS ConnectorType: DisplayPort ConnectorNumber: 2 _ConnectorLocation: 2 non-desktop: 0 supported: 0, 1 DP-4 disconnected (normal left inverted right x axis y axis) Identifier: 0x1cc Timestamp: 55912 Subpixel: unknown Clones: CRTCs: 0 1 2 3 Transform: 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 filter: CTM: 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 CscMatrix: 65536 0 0 0 0 65536 0 0 0 0 65536 0 BorderDimensions: 4 supported: 4 Border: 0 0 0 0 range: (0, 65535) SignalFormat: DisplayPort supported: DisplayPort ConnectorType: DisplayPort ConnectorNumber: 1 _ConnectorLocation: 1 non-desktop: 0 supported: 0, 1 DP-5 disconnected (normal left inverted right x axis y axis) Identifier: 0x1cd Timestamp: 55912 Subpixel: unknown Clones: CRTCs: 0 1 2 3 Transform: 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 filter: CTM: 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 CscMatrix: 65536 0 0 0 0 65536 0 0 0 0 65536 0 BorderDimensions: 4 supported: 4 Border: 0 0 0 0 range: (0, 65535) SignalFormat: TMDS supported: TMDS ConnectorType: DisplayPort ConnectorNumber: 1 _ConnectorLocation: 1 non-desktop: 0 supported: 0, 1 DVI-D-1-0 disconnected (normal left inverted right x axis y axis) Identifier: 0x36b Timestamp: 50035 Subpixel: unknown Clones: CRTCs: 4 5 6 7 Transform: 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 filter: PRIME Synchronization: 1 supported: 0, 1 CTM: 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 CscMatrix: 65536 0 0 0 0 65536 0 0 0 0 65536 0 BorderDimensions: 4 supported: 4 Border: 0 0 0 0 range: (0, 65535) SignalFormat: TMDS supported: TMDS ConnectorType: DVI-D ConnectorNumber: 0 _ConnectorLocation: 0 non-desktop: 0 supported: 0, 1 HDMI-1-0 disconnected (normal left inverted right x axis y axis) Identifier: 0x36c Timestamp: 50035 Subpixel: unknown Clones: CRTCs: 4 5 6 7 Transform: 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 filter: PRIME Synchronization: 1 supported: 0, 1 CTM: 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 CscMatrix: 65536 0 0 0 0 65536 0 0 0 0 65536 0 BorderDimensions: 4 supported: 4 Border: 0 0 0 0 range: (0, 65535) SignalFormat: TMDS supported: TMDS ConnectorType: HDMI ConnectorNumber: 3 _ConnectorLocation: 3 non-desktop: 0 supported: 0, 1 DP-1-0 disconnected (normal left inverted right x axis y axis) Identifier: 0x36d Timestamp: 50035 Subpixel: unknown Clones: CRTCs: 4 5 6 7 Transform: 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 filter: PRIME Synchronization: 1 supported: 0, 1 CTM: 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 CscMatrix: 65536 0 0 0 0 65536 0 0 0 0 65536 0 BorderDimensions: 4 supported: 4 Border: 0 0 0 0 range: (0, 65535) SignalFormat: DisplayPort supported: DisplayPort ConnectorType: DisplayPort ConnectorNumber: 4 _ConnectorLocation: 4 non-desktop: 0 supported: 0, 1 DP-1-1 disconnected (normal left inverted right x axis y axis) Identifier: 0x36e Timestamp: 50035 Subpixel: unknown Clones: CRTCs: 4 5 6 7 Transform: 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 filter: PRIME Synchronization: 1 supported: 0, 1 CTM: 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 CscMatrix: 65536 0 0 0 0 65536 0 0 0 0 65536 0 BorderDimensions: 4 supported: 4 Border: 0 0 0 0 range: (0, 65535) SignalFormat: TMDS supported: TMDS ConnectorType: DisplayPort ConnectorNumber: 4 _ConnectorLocation: 4 non-desktop: 0 supported: 0, 1 DP-1-2 disconnected (normal left inverted right x axis y axis) Identifier: 0x36f Timestamp: 50035 Subpixel: unknown Clones: CRTCs: 4 5 6 7 Transform: 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 filter: PRIME Synchronization: 1 supported: 0, 1 CTM: 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 CscMatrix: 65536 0 0 0 0 65536 0 0 0 0 65536 0 BorderDimensions: 4 supported: 4 Border: 0 0 0 0 range: (0, 65535) SignalFormat: DisplayPort supported: DisplayPort ConnectorType: DisplayPort ConnectorNumber: 2 _ConnectorLocation: 2 non-desktop: 0 supported: 0, 1 DP-1-3 disconnected (normal left inverted right x axis y axis) Identifier: 0x370 Timestamp: 50035 Subpixel: unknown Clones: CRTCs: 4 5 6 7 Transform: 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 filter: PRIME Synchronization: 1 supported: 0, 1 CTM: 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 CscMatrix: 65536 0 0 0 0 65536 0 0 0 0 65536 0 BorderDimensions: 4 supported: 4 Border: 0 0 0 0 range: (0, 65535) SignalFormat: TMDS supported: TMDS ConnectorType: DisplayPort ConnectorNumber: 2 _ConnectorLocation: 2 non-desktop: 0 supported: 0, 1 DP-1-4 disconnected (normal left inverted right x axis y axis) Identifier: 0x371 Timestamp: 50035 Subpixel: unknown Clones: CRTCs: 4 5 6 7 Transform: 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 filter: PRIME Synchronization: 1 supported: 0, 1 CTM: 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 CscMatrix: 65536 0 0 0 0 65536 0 0 0 0 65536 0 BorderDimensions: 4 supported: 4 Border: 0 0 0 0 range: (0, 65535) SignalFormat: DisplayPort supported: DisplayPort ConnectorType: DisplayPort ConnectorNumber: 1 _ConnectorLocation: 1 non-desktop: 0 supported: 0, 1 DP-1-5 disconnected (normal left inverted right x axis y axis) Identifier: 0x372 Timestamp: 50035 Subpixel: unknown Clones: CRTCs: 4 5 6 7 Transform: 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 filter: PRIME Synchronization: 1 supported: 0, 1 CTM: 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 CscMatrix: 65536 0 0 0 0 65536 0 0 0 0 65536 0 BorderDimensions: 4 supported: 4 Border: 0 0 0 0 range: (0, 65535) SignalFormat: TMDS supported: TMDS ConnectorType: DisplayPort ConnectorNumber: 1 _ConnectorLocation: 1 non-desktop: 0 supported: 0, 1

ledoge commented 3 years ago

xrandr --output DP-0 --set CscMatrix 54401,11390,-255,0,2458,61901,1176,0,626,4319,60589,0

limon commented 3 years ago

Could you pls help me with my LG 32UN650, thanks. Is there a formula so that we can do it by ourselves? LG32UN650.zip

lg

DP-2 connected primary 3840x2160+0+400 (0x1c2) normal (normal left inverted right x axis y axis) 697mm x 392mm Identifier: 0x1c1 Timestamp: 3117591 Subpixel: unknown Gamma: 1.0:1.0:1.0 Brightness: 1.0 Clones: CRTC: 0 CRTCs: 1 0 2 3 Transform: 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 filter: CTM: 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 CscMatrix: 65536 0 0 0 0 65536 0 0 0 0 65536 0 EDID: 00ffffffffffff001e6d5077c0200300 081f0104b5462878fb7ba1ae4f44a926 0c5054210800d1c06140010101010101 0101010101014dd000a0f0703e803020 3500b9882100001a000000fd00303c87 873c010a202020202020000000fc004c 472048445220344b0a202020000000ff 003130384e54414236303939320a010a 02031f72230907078301000044010304 10e2006ae305c000e606050159595204 740030f2705a80b0588a00b988210000 1e565e00a0a0a0295030203500b98821 00001a1a3680a070381f402a263500b9 882100001a0000000000000000000000 00000000000000000000000000000000 000000000000000000000000000000ea BorderDimensions: 4 supported: 4 Border: 0 0 0 0 range: (0, 65535) SignalFormat: DisplayPort supported: DisplayPort ConnectorType: DisplayPort ConnectorNumber: 2 _ConnectorLocation: 2 non-desktop: 0 supported: 0, 1 3840x2160 (0x1c2) 533.250MHz +HSync -VSync *current +preferred h: width 3840 start 3888 end 3920 total 4000 skew 0 clock 133.31KHz v: height 2160 start 2163 end 2168 total 2222 clock 60.00Hz 3840x2160 (0x1c3) 297.000MHz +HSync +VSync h: width 3840 start 4016 end 4104 total 4400 skew 0 clock 67.50KHz v: height 2160 start 2168 end 2178 total 2250 clock 30.00Hz 2560x1440 (0x1c4) 241.500MHz +HSync -VSync h: width 2560 start 2608 end 2640 total 2720 skew 0 clock 88.79KHz v: height 1440 start 1443 end 1448 total 1481 clock 59.95Hz 1920x1080 (0x1c5) 148.500MHz +HSync +VSync h: width 1920 start 2008 end 2052 total 2200 skew 0 clock 67.50KHz v: height 1080 start 1084 end 1089 total 1125 clock 60.00Hz 1920x1080 (0x1c6) 148.350MHz +HSync +VSync h: width 1920 start 2008 end 2052 total 2200 skew 0 clock 67.43KHz v: height 1080 start 1084 end 1089 total 1125 clock 59.94Hz 1920x1080 (0x1c7) 138.500MHz +HSync -VSync h: width 1920 start 1962 end 2000 total 2080 skew 0 clock 66.59KHz v: height 1080 start 1083 end 1088 total 1111 clock 59.93Hz 1280x720 (0x1c8) 74.180MHz +HSync +VSync h: width 1280 start 1390 end 1430 total 1650 skew 0 clock 44.96KHz v: height 720 start 725 end 730 total 750 clock 59.94Hz 1024x768 (0x1c9) 65.000MHz -HSync -VSync h: width 1024 start 1048 end 1184 total 1344 skew 0 clock 48.36KHz v: height 768 start 771 end 777 total 806 clock 60.00Hz 800x600 (0x1ca) 40.000MHz +HSync +VSync h: width 800 start 840 end 968 total 1056 skew 0 clock 37.88KHz v: height 600 start 601 end 605 total 628 clock 60.32Hz 720x480 (0x1cb) 27.000MHz -HSync -VSync h: width 720 start 736 end 798 total 858 skew 0 clock 31.47KHz v: height 480 start 489 end 495 total 525 clock 59.94Hz 640x480 (0x1cc) 25.175MHz -HSync -VSync h: width 640 start 656 end 752 total 800 skew 0 clock 31.47KHz v: height 480 start 490 end 492 total 525 clock 59.94Hz 640x480 (0x1cd) 25.170MHz -HSync -VSync h: width 640 start 656 end 752 total 800 skew 0 clock 31.46KHz v: height 480 start 490 end 492 total 525 clock 59.93Hz

ledoge commented 3 years ago

Is there a formula so that we can do it by ourselves?

Well, the math is the same as the one used in this tool. I just set the x and y values manually to the illuminant-relative primaries (equivalent to the EDID xy values, if a profile is created from that data instead of measurements), then take the values of the calculated matrix and multiply them by 65536. Maybe I'll make that into a separate tool at some point, but right now I can't be bothered. Should be easy enough for someone else the rip out the relevant code and allow you to plug in your values (or ICC profile) though.

Anyway, here are the values for your monitor: xrandr --output DP-2 --set CscMatrix 55648,10492,-604,0,2688,61367,1479,0,758,3087,61689,0

Probotector commented 3 years ago

Hello, thank you again for your fantastic program; I had to perform an RMA of my Dell S2721DGF monitor, and the values ​​reported by EDID are different. Could you calculate the values ​​again using the coordinates reported by your Windows program?

These are the coordinates reported by your program

Captura

Are these coordinates useful for the xrandr command or is the same of displaycal report?


Captura2

Screen 0: minimum 8 x 8, current 2560 x 1440, maximum 32767 x 32767 DVI-D-0 disconnected (normal left inverted right x axis y axis) Identifier: 0x1bd Timestamp: 49580 Subpixel: unknown Clones:
CRTCs: 0 1 2 3 Transform: 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 filter:
CTM: 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0
0 1
CscMatrix: 65536 0 0 0 0 65536 0 0 0 0 65536 0
BorderDimensions: 4
supported: 4 Border: 0 0 0 0
range: (0, 65535) SignalFormat: TMDS
supported: TMDS ConnectorType: DVI-D
ConnectorNumber: 0
_ConnectorLocation: 0
non-desktop: 0
supported: 0, 1 HDMI-0 disconnected (normal left inverted right x axis y axis) Identifier: 0x1be Timestamp: 49580 Subpixel: unknown Clones:
CRTCs: 0 1 2 3 Transform: 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 filter:
CTM: 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0
0 1
CscMatrix: 65536 0 0 0 0 65536 0 0 0 0 65536 0
BorderDimensions: 4
supported: 4 Border: 0 0 0 0
range: (0, 65535) SignalFormat: TMDS
supported: TMDS ConnectorType: HDMI
ConnectorNumber: 3
_ConnectorLocation: 3
non-desktop: 0
supported: 0, 1 HDMI-1 disconnected (normal left inverted right x axis y axis) Identifier: 0x1bf Timestamp: 49580 Subpixel: unknown Clones:
CRTCs: 0 1 2 3 Transform: 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 filter:
CTM: 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0
0 1
CscMatrix: 65536 0 0 0 0 65536 0 0 0 0 65536 0
BorderDimensions: 4
supported: 4 Border: 0 0 0 0
range: (0, 65535) SignalFormat: TMDS
supported: TMDS ConnectorType: HDMI
ConnectorNumber: 4
_ConnectorLocation: 4
non-desktop: 0
supported: 0, 1 DP-0 disconnected (normal left inverted right x axis y axis) Identifier: 0x1c0 Timestamp: 49580 Subpixel: unknown Clones:
CRTCs: 0 1 2 3 Transform: 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 filter:
CTM: 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0
0 1
CscMatrix: 65536 0 0 0 0 65536 0 0 0 0 65536 0
BorderDimensions: 4
supported: 4 Border: 0 0 0 0
range: (0, 65535) SignalFormat: DisplayPort
supported: DisplayPort ConnectorType: DisplayPort
ConnectorNumber: 2
_ConnectorLocation: 2
non-desktop: 0
supported: 0, 1 DP-1 disconnected (normal left inverted right x axis y axis) Identifier: 0x1c1 Timestamp: 49580 Subpixel: unknown Clones:
CRTCs: 0 1 2 3 Transform: 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 filter:
CTM: 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0
0 1
CscMatrix: 65536 0 0 0 0 65536 0 0 0 0 65536 0
BorderDimensions: 4
supported: 4 Border: 0 0 0 0
range: (0, 65535) SignalFormat: TMDS
supported: TMDS ConnectorType: DisplayPort
ConnectorNumber: 2
_ConnectorLocation: 2
non-desktop: 0
supported: 0, 1 DP-2 connected primary 2560x1440+0+0 (0x1c3) normal (normal left inverted right x axis y axis) 597mm x 336mm Identifier: 0x1c2 Timestamp: 49580 Subpixel: unknown Gamma: 1.0:1.0:1.0 Brightness: 1.0 Clones:
CRTC: 0 CRTCs: 0 1 2 3 Transform: 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 filter:
CTM: 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0
0 1
CscMatrix: 65536 0 0 0 0 65536 0 0 0 0 65536 0
EDID:
00ffffffffffff0010acd9414c353436 231e0104b53c22783b8cb5af4f43ab26 0e5054a54b00d100d1c0b300a9408180 8100714fe1c0565e00a0a0a029503020 350055502100001a000000ff00463148 423032330a2020202020000000fc0044 454c4c205332373231444746000000fd 0030a5fafa41010a20202020202001b2 020337f1513f101f2005140413121103 02010607151623090707830100006d1a 0000020b30a5000f623d623de305c000 e606050162623ef4fb0050a0a0285008 20680055502100001a40e7006aa0a067 500820980455502100001a6fc200a0a0 a055503020350055502100001a000000 000000000000000000000000000000a5 BorderDimensions: 4
supported: 4 Border: 0 0 0 0
range: (0, 65535) SignalFormat: DisplayPort
supported: DisplayPort ConnectorType: DisplayPort
ConnectorNumber: 1
_ConnectorLocation: 1
non-desktop: 0
supported: 0, 1 2560x1440 (0x1c3) 241.500MHz +HSync -VSync *current +preferred h: width 2560 start 2608 end 2640 total 2720 skew 0 clock 88.79KHz v: height 1440 start 1443 end 1448 total 1481 clock 59.95Hz 2560x1440 (0x1c4) 645.000MHz +HSync -VSync h: width 2560 start 2568 end 2600 total 2640 skew 0 clock 244.32KHz v: height 1440 start 1446 end 1454 total 1480 clock 165.08Hz 2560x1440 (0x1c5) 592.000MHz +HSync -VSync h: width 2560 start 2568 end 2600 total 2666 skew 0 clock 222.06KHz v: height 1440 start 1465 end 1473 total 1543 clock 143.91Hz 2560x1440 (0x1c6) 497.750MHz +HSync -VSync h: width 2560 start 2608 end 2640 total 2720 skew 0 clock 183.00KHz v: height 1440 start 1443 end 1448 total 1525 clock 120.00Hz 2048x1152 (0x1c7) 162.000MHz +HSync +VSync h: width 2048 start 2074 end 2154 total 2250 skew 0 clock 72.00KHz v: height 1152 start 1153 end 1156 total 1200 clock 60.00Hz 1920x1200 (0x1c8) 193.250MHz -HSync +VSync h: width 1920 start 2056 end 2256 total 2592 skew 0 clock 74.56KHz v: height 1200 start 1203 end 1209 total 1245 clock 59.88Hz 1920x1080 (0x1c9) 296.700MHz +HSync +VSync h: width 1920 start 2008 end 2052 total 2200 skew 0 clock 134.86KHz v: height 1080 start 1084 end 1089 total 1125 clock 119.88Hz 1920x1080 (0x1ca) 148.500MHz +HSync +VSync h: width 1920 start 2008 end 2052 total 2200 skew 0 clock 67.50KHz v: height 1080 start 1084 end 1089 total 1125 clock 60.00Hz 1920x1080 (0x1cb) 148.350MHz +HSync +VSync h: width 1920 start 2008 end 2052 total 2200 skew 0 clock 67.43KHz v: height 1080 start 1084 end 1089 total 1125 clock 59.94Hz 1920x1080 (0x1cc) 148.500MHz +HSync +VSync h: width 1920 start 2448 end 2492 total 2640 skew 0 clock 56.25KHz v: height 1080 start 1084 end 1089 total 1125 clock 50.00Hz 1920x1080 (0x1cd) 74.180MHz +HSync +VSync h: width 1920 start 2558 end 2602 total 2750 skew 0 clock 26.97KHz v: height 1080 start 1084 end 1089 total 1125 clock 23.98Hz 1680x1050 (0x1ce) 146.250MHz -HSync +VSync h: width 1680 start 1784 end 1960 total 2240 skew 0 clock 65.29KHz v: height 1050 start 1053 end 1059 total 1089 clock 59.95Hz 1600x1200 (0x1cf) 162.000MHz +HSync +VSync h: width 1600 start 1664 end 1856 total 2160 skew 0 clock 75.00KHz v: height 1200 start 1201 end 1204 total 1250 clock 60.00Hz 1280x1024 (0x1d0) 135.000MHz +HSync +VSync h: width 1280 start 1296 end 1440 total 1688 skew 0 clock 79.98KHz v: height 1024 start 1025 end 1028 total 1066 clock 75.02Hz 1280x1024 (0x1d1) 108.000MHz +HSync +VSync h: width 1280 start 1328 end 1440 total 1688 skew 0 clock 63.98KHz v: height 1024 start 1025 end 1028 total 1066 clock 60.02Hz 1280x800 (0x1d2) 83.500MHz -HSync +VSync h: width 1280 start 1352 end 1480 total 1680 skew 0 clock 49.70KHz v: height 800 start 803 end 809 total 831 clock 59.81Hz 1280x720 (0x1d3) 74.180MHz +HSync +VSync h: width 1280 start 1390 end 1430 total 1650 skew 0 clock 44.96KHz v: height 720 start 725 end 730 total 750 clock 59.94Hz 1280x720 (0x1d4) 74.250MHz +HSync +VSync h: width 1280 start 1720 end 1760 total 1980 skew 0 clock 37.50KHz v: height 720 start 725 end 730 total 750 clock 50.00Hz 1152x864 (0x1d5) 108.000MHz +HSync +VSync h: width 1152 start 1216 end 1344 total 1600 skew 0 clock 67.50KHz v: height 864 start 865 end 868 total 900 clock 75.00Hz 1024x768 (0x1d6) 78.750MHz +HSync +VSync h: width 1024 start 1040 end 1136 total 1312 skew 0 clock 60.02KHz v: height 768 start 769 end 772 total 800 clock 75.03Hz 1024x768 (0x1d7) 65.000MHz -HSync -VSync h: width 1024 start 1048 end 1184 total 1344 skew 0 clock 48.36KHz v: height 768 start 771 end 777 total 806 clock 60.00Hz 800x600 (0x1d8) 49.500MHz +HSync +VSync h: width 800 start 816 end 896 total 1056 skew 0 clock 46.88KHz v: height 600 start 601 end 604 total 625 clock 75.00Hz 800x600 (0x1d9) 40.000MHz +HSync +VSync h: width 800 start 840 end 968 total 1056 skew 0 clock 37.88KHz v: height 600 start 601 end 605 total 628 clock 60.32Hz 720x576 (0x1da) 27.000MHz -HSync -VSync h: width 720 start 732 end 796 total 864 skew 0 clock 31.25KHz v: height 576 start 581 end 586 total 625 clock 50.00Hz 720x480 (0x1db) 27.000MHz -HSync -VSync h: width 720 start 736 end 798 total 858 skew 0 clock 31.47KHz v: height 480 start 489 end 495 total 525 clock 59.94Hz 640x480 (0x1dc) 31.500MHz -HSync -VSync h: width 640 start 656 end 720 total 840 skew 0 clock 37.50KHz v: height 480 start 481 end 484 total 500 clock 75.00Hz 640x480 (0x1dd) 25.175MHz -HSync -VSync h: width 640 start 656 end 752 total 800 skew 0 clock 31.47KHz v: height 480 start 490 end 492 total 525 clock 59.94Hz 640x480 (0x1de) 25.170MHz -HSync -VSync h: width 640 start 656 end 752 total 800 skew 0 clock 31.46KHz v: height 480 start 490 end 492 total 525 clock 59.93Hz DP-3 disconnected (normal left inverted right x axis y axis) Identifier: 0x1df Timestamp: 49580 Subpixel: unknown Clones:
CRTCs: 0 1 2 3 Transform: 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 filter:
CTM: 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0
0 1
CscMatrix: 65536 0 0 0 0 65536 0 0 0 0 65536 0
BorderDimensions: 4
supported: 4 Border: 0 0 0 0
range: (0, 65535) SignalFormat: TMDS
supported: TMDS ConnectorType: DisplayPort
ConnectorNumber: 1
_ConnectorLocation: 1
non-desktop: 0
supported: 0, 1

Thanks again for your help

ledoge commented 3 years ago

The values shown in this tool are the same as the illuminant-relative xy values shown in DisplayCAL (except with more precision), so only the former is required if you're relying on EDID data and not measurements.

Here are the calculated values for your new primaries: 54644,11089,-197,0,3041,62151,343,0,813,3258,61463,0

I attached a small program here that takes the primary coordinates as input and prints the calculated matrix in the right format for CscMatrix. It's only in source form since I'm not sure what the best way of compiling this for Linux would be, but it should be simple enough to figure out (will require you to add the MathNet.Numerics package from NuGet though).

Probotector commented 3 years ago

Thank you very much for your help

ghost commented 3 years ago

Thank you so much for this tool. My extended gamut MSI monitor has terrible colour and no built-in sRGB mode. It was gathering dust and heading for ebay, now after using your tool it looks great. If it's not too much trouble could you calculate the linux values for me please? The code/math is beyond me. :)

Untitled

DP-0 connected primary 1920x1080+0+0 (0x1eb) normal (normal left inverted right x axis y axis) 521mm x 293mm Identifier: 0x1d3 Timestamp: 31400 Subpixel: unknown Gamma: 1.0:1.0:1.0 Brightness: 1.0 Clones:
CRTC: 0 CRTCs: 0 1 2 3 Transform: 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 filter: EDID: 00ffffffffffff003669a23e8a000000 121d0104a5341d783b6315ad5049a626 135054bfcf00814081809500714f81c0 b30001010101023a801871382d40582c 450009252100001e0882805070384d40 0820f80c09252100001a000000fd0030 90b4b422010a202020202020000000fc 004d5349204d4147323431430a20010d 020320f14d010304131f120211900e0f 1d1e230907078301000065030c001000 fe5b80a0703835403020350009252100 001a866f80a070384040302035000925 2100001a000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000065 CTM: 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 CscMatrix: 65536 0 0 0 0 65536 0 0 0 0 65536 0 BorderDimensions: 4 supported: 4 Border: 0 0 0 0 range: (0, 65535) SignalFormat: DisplayPort supported: DisplayPort ConnectorType: DisplayPort ConnectorNumber: 2 _ConnectorLocation: 2 non-desktop: 0 supported: 0, 1 1920x1080 (0x1be) 148.500MHz +HSync +VSync +preferred h: width 1920 start 2008 end 2052 total 2200 skew 0 clock 67.50KHz v: height 1080 start 1084 end 1089 total 1125 clock 60.00Hz 1920x1080 (0x1eb) 332.880MHz +HSync -VSync *current h: width 1920 start 1928 end 1960 total 2000 skew 0 clock 166.44KHz v: height 1080 start 1143 end 1151 total 1157 clock 143.85Hz 1920x1080 (0x1ec) 285.500MHz +HSync -VSync h: width 1920 start 1968 end 2000 total 2080 skew 0 clock 137.26KHz v: height 1080 start 1083 end 1088 total 1144 clock 119.98Hz 1920x1080 (0x1ed) 235.500MHz +HSync -VSync h: width 1920 start 1968 end 2000 total 2080 skew 0 clock 113.22KHz v: height 1080 start 1083 end 1088 total 1133 clock 99.93Hz 1920x1080 (0x1ee) 148.350MHz +HSync +VSync h: width 1920 start 2008 end 2052 total 2200 skew 0 clock 67.43KHz v: height 1080 start 1084 end 1089 total 1125 clock 59.94Hz 1920x1080 (0x1ef) 148.500MHz +HSync +VSync h: width 1920 start 2448 end 2492 total 2640 skew 0 clock 56.25KHz v: height 1080 start 1084 end 1089 total 1125 clock 50.00Hz 1680x1050 (0x1bf) 146.250MHz -HSync +VSync h: width 1680 start 1784 end 1960 total 2240 skew 0 clock 65.29KHz v: height 1050 start 1053 end 1059 total 1089 clock 59.95Hz 1440x900 (0x1c1) 106.500MHz -HSync +VSync h: width 1440 start 1520 end 1672 total 1904 skew 0 clock 55.93KHz v: height 900 start 903 end 909 total 934 clock 59.89Hz 1440x576 (0x1f0) 54.000MHz -HSync +VSync h: width 1440 start 1464 end 1592 total 1728 skew 0 clock 31.25KHz v: height 576 start 581 end 586 total 625 clock 50.00Hz 1440x480 (0x1f1) 54.000MHz -HSync -VSync h: width 1440 start 1472 end 1596 total 1716 skew 0 clock 31.47KHz v: height 480 start 489 end 495 total 525 clock 59.94Hz 1280x1024 (0x1c2) 135.000MHz +HSync +VSync h: width 1280 start 1296 end 1440 total 1688 skew 0 clock 79.98KHz v: height 1024 start 1025 end 1028 total 1066 clock 75.02Hz 1280x1024 (0x1c3) 108.000MHz +HSync +VSync h: width 1280 start 1328 end 1440 total 1688 skew 0 clock 63.98KHz v: height 1024 start 1025 end 1028 total 1066 clock 60.02Hz 1280x960 (0x1c4) 108.000MHz +HSync +VSync h: width 1280 start 1376 end 1488 total 1800 skew 0 clock 60.00KHz v: height 960 start 961 end 964 total 1000 clock 60.00Hz 1280x720 (0x1c5) 74.250MHz +HSync +VSync h: width 1280 start 1390 end 1430 total 1650 skew 0 clock 45.00KHz v: height 720 start 725 end 730 total 750 clock 60.00Hz 1280x720 (0x1f2) 74.180MHz +HSync +VSync h: width 1280 start 1390 end 1430 total 1650 skew 0 clock 44.96KHz v: height 720 start 725 end 730 total 750 clock 59.94Hz 1280x720 (0x1f3) 74.250MHz +HSync +VSync h: width 1280 start 1720 end 1760 total 1980 skew 0 clock 37.50KHz v: height 720 start 725 end 730 total 750 clock 50.00Hz 1152x864 (0x1c6) 108.000MHz +HSync +VSync h: width 1152 start 1216 end 1344 total 1600 skew 0 clock 67.50KHz v: height 864 start 865 end 868 total 900 clock 75.00Hz 1024x768 (0x1c7) 78.750MHz +HSync +VSync h: width 1024 start 1040 end 1136 total 1312 skew 0 clock 60.02KHz v: height 768 start 769 end 772 total 800 clock 75.03Hz 1024x768 (0x1c8) 75.000MHz -HSync -VSync h: width 1024 start 1048 end 1184 total 1328 skew 0 clock 56.48KHz v: height 768 start 771 end 777 total 806 clock 70.07Hz 1024x768 (0x1c9) 65.000MHz -HSync -VSync h: width 1024 start 1048 end 1184 total 1344 skew 0 clock 48.36KHz v: height 768 start 771 end 777 total 806 clock 60.00Hz 800x600 (0x1ca) 49.500MHz +HSync +VSync h: width 800 start 816 end 896 total 1056 skew 0 clock 46.88KHz v: height 600 start 601 end 604 total 625 clock 75.00Hz 800x600 (0x1cb) 50.000MHz +HSync +VSync h: width 800 start 856 end 976 total 1040 skew 0 clock 48.08KHz v: height 600 start 637 end 643 total 666 clock 72.19Hz 800x600 (0x1cc) 40.000MHz +HSync +VSync h: width 800 start 840 end 968 total 1056 skew 0 clock 37.88KHz v: height 600 start 601 end 605 total 628 clock 60.32Hz 800x600 (0x1cd) 36.000MHz +HSync +VSync h: width 800 start 824 end 896 total 1024 skew 0 clock 35.16KHz v: height 600 start 601 end 603 total 625 clock 56.25Hz 720x576 (0x1f4) 27.000MHz -HSync -VSync h: width 720 start 732 end 796 total 864 skew 0 clock 31.25KHz v: height 576 start 581 end 586 total 625 clock 50.00Hz 720x480 (0x1f5) 27.000MHz -HSync -VSync h: width 720 start 736 end 798 total 858 skew 0 clock 31.47KHz v: height 480 start 489 end 495 total 525 clock 59.94Hz 640x480 (0x1ce) 31.500MHz -HSync -VSync h: width 640 start 656 end 720 total 840 skew 0 clock 37.50KHz v: height 480 start 481 end 484 total 500 clock 75.00Hz 640x480 (0x1cf) 31.500MHz -HSync -VSync h: width 640 start 656 end 696 total 832 skew 0 clock 37.86KHz v: height 480 start 481 end 484 total 520 clock 72.81Hz 640x480 (0x1d0) 25.175MHz -HSync -VSync h: width 640 start 656 end 752 total 800 skew 0 clock 31.47KHz v: height 480 start 490 end 492 total 525 clock 59.94Hz 640x480 (0x1f6) 25.170MHz -HSync -VSync h: width 640 start 656 end 752 total 800 skew 0 clock 31.46KHz v: height 480 start 490 end 492 total 525 clock 59.93Hz

ledoge commented 3 years ago

@nottam Sure, here you go xrandr --output DP-0 --set CscMatrix 57571,6676,1288,0,2493,65342,-2299,0,748,3322,61465,0

ghost commented 3 years ago

Thank you!

TacoEarth commented 3 years ago

is there any way to make it work on AMD GPUs? is there any method to do it with xrandr?

ledoge commented 3 years ago

@TacoEarth In theory this program should work, however, it's from a few years ago and since it's an alpha, I don't know if the API has changed since then. Can you try compiling and playing around with it? If it works, you can easily calculate the matrix values based on measured/reported primaries using the code I posted (or I can calculate them for you if you'd prefer that).

Try something like

cmdemo -o <output name> -d srgb -c rg -r srgb

and see if that works.

If it doesn't work... Well, all the values should still be exposed via xrandr, so you should be able to set them from the command line, though the matrix values use a pretty weird encoding, which is why it would be easier if that program just works.

TacoEarth commented 3 years ago

It works. But I am struggling to find the right value for the CTM, and the code attached on compilation throws an IndexOutOfRange exception and returns 0.

image image These are from my Windows partition with Custom Color on and Color Temperature control off, if that makes any difference.

I believe this should be useful. If it wouldn't be too much, could you calculate them for me? The CTM also seems to be a nonuple matrix as per cmdemo's help.txt. Thanks.

ledoge commented 3 years ago

@TacoEarth Those reported primaries are the sRGB ones. I assume the Windows driver sRGB clamp is actually working though? In that case, it would mean that the driver actually changes the reported EDID. Please create another profile with Custom Color off (the colored line should not match the dotted line in the DisplayCAL gamut view). Or, alternatively, tell me the name of the monitor (assuming it's a popular one) so I can look up ICC profiles and use the values from there.

Not sure why my code threw an exception, but I'll take a look at it and make it output the values in the right format for that AMD tool later.

TacoEarth commented 3 years ago

My bad for not mentioning it, turning off Custom Color makes no difference in the info tab. Anyway here it is with it off. image

However, when I turn the "hidden feature" off I can see the my display gets noticeably duller and washed out.

This is the monitor connected via eDP on a laptop: LGD0563

ledoge commented 3 years ago

@TacoEarth Hmmm... This might be another case of LG setting the sRGB flag (making DisplayCAL report it as sRGB) but then reporting non-sRGB primaries (which the AMD driver uses anyway). Can you show the output of the "Info" window of novideo_srgb.exe for your monitor?

TacoEarth commented 3 years ago

novideo_srgb.exe doesn't launch with GUI and suspends itself and closes on my system. Fresh install of Windows 11 21H2. I have extracted the entire folder along with the DLLs.

Running as administrator makes no difference.

ledoge commented 3 years ago

Oh yeah, sorry, forgot that it uses NVIDIA APIs for everything so it can't work with your AMD GPU. Not sure what other interfaces for getting the EDID there are on Windows, but xrandr --verbose would certainly work on Linux.

TacoEarth commented 3 years ago

EDID is 00ffffffffffff0030e4630500000000 001c0104a52213780238d5975e598e27 1c505400000001010101010101010101 010101010101243680a070381f403020 350058c2100000190000000000000000 00000000000000000000000000fe004c 4720446973706c61790a2020000000fe 004c503135365746432d5350443100c0

whole output of xrandr --verbose

eDP connected primary 1920x1080+0+0 (0x56) normal (normal left inverted right x axis y axis) 344mm x 194mm
    Identifier: 0x54
    Timestamp:  11327
    Subpixel:   unknown
    Gamma:      1.0:1.0:1.0
    Brightness: 1.0
    Clones:    
    CRTC:       0
    CRTCs:      0 1 2 3
    Transform:  1.000000 0.000000 0.000000
                0.000000 1.000000 0.000000
                0.000000 0.000000 1.000000
               filter: 
    _MUTTER_PRESENTATION_OUTPUT: 0 
    EDID: 
        00ffffffffffff0030e4630500000000
        001c0104a52213780238d5975e598e27
        1c505400000001010101010101010101
        010101010101243680a070381f403020
        350058c2100000190000000000000000
        00000000000000000000000000fe004c
        4720446973706c61790a2020000000fe
        004c503135365746432d5350443100c0
    GAMMA_LUT_SIZE: 4096 
        range: (0, -1)
    DEGAMMA_LUT_SIZE: 4096 
        range: (0, -1)
    GAMMA_LUT: 0 
        range: (0, 65535)
    CTM: 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 
        0 1 
    DEGAMMA_LUT: 0 
        range: (0, 65535)
    TearFree: auto 
        supported: off, on, auto
    HDCP Content Type: HDCP Type0 
        supported: HDCP Type0, HDCP Type1
    Content Protection: Undesired 
        supported: Undesired, Desired, Enabled
    vrr_capable: 0 
        range: (0, 1)
    abm level: 0 
        range: (0, 4)
    max bpc: 16 
        range: (8, 16)
    underscan vborder: 0 
        range: (0, 128)
    underscan hborder: 0 
        range: (0, 128)
    underscan: off 
        supported: off, on, auto
    scaling mode: None 
        supported: None, Full, Center, Full aspect
    link-status: Good 
        supported: Good, Bad
    CONNECTOR_ID: 84 
        supported: 84
    non-desktop: 0 
        range: (0, 1)
  1920x1080 (0x56) 138.600MHz -HSync -VSync *current +preferred
        h: width  1920 start 1968 end 2000 total 2080 skew    0 clock  66.63KHz
        v: height 1080 start 1083 end 1088 total 1111           clock  59.98Hz
  1680x1050 (0x57) 138.600MHz -HSync -VSync
        h: width  1680 start 1968 end 2000 total 2080 skew    0 clock  66.63KHz
        v: height 1050 start 1083 end 1088 total 1111           clock  59.98Hz
  1280x1024 (0x58) 138.600MHz -HSync -VSync
        h: width  1280 start 1968 end 2000 total 2080 skew    0 clock  66.63KHz
        v: height 1024 start 1083 end 1088 total 1111           clock  59.98Hz
  1440x900 (0x59) 138.600MHz -HSync -VSync
        h: width  1440 start 1968 end 2000 total 2080 skew    0 clock  66.63KHz
        v: height  900 start 1083 end 1088 total 1111           clock  59.98Hz
  1280x800 (0x5a) 138.600MHz -HSync -VSync
        h: width  1280 start 1968 end 2000 total 2080 skew    0 clock  66.63KHz
        v: height  800 start 1083 end 1088 total 1111           clock  59.98Hz
  1280x720 (0x5b) 138.600MHz -HSync -VSync
        h: width  1280 start 1968 end 2000 total 2080 skew    0 clock  66.63KHz
        v: height  720 start 1083 end 1088 total 1111           clock  59.98Hz
  1024x768 (0x5c) 138.600MHz -HSync -VSync
        h: width  1024 start 1968 end 2000 total 2080 skew    0 clock  66.63KHz
        v: height  768 start 1083 end 1088 total 1111           clock  59.98Hz
  800x600 (0x5d) 138.600MHz -HSync -VSync
        h: width   800 start 1968 end 2000 total 2080 skew    0 clock  66.63KHz
        v: height  600 start 1083 end 1088 total 1111           clock  59.98Hz
  640x480 (0x5e) 138.600MHz -HSync -VSync
        h: width   640 start 1968 end 2000 total 2080 skew    0 clock  66.63KHz
        v: height  480 start 1083 end 1088 total 1111           clock  59.98Hz
ledoge commented 3 years ago

Hmm... Not sure why DisplayCAL was reporting the sRGB gamut, as the EDID you posted doesn't have the sRGB flag set and it has non-sRGB primaries. I assume you recreated the EDID-based ICC profile after turning Custom Color off? Maybe you'd also have to reboot for the EDID to be correct again, idk.

Either way, let me know if these matrix values look correct with that AMD tool: 1.333280852882455:-0.4405440183349808:0.10726316545252579:-0.11932041190531137:1.2693125205811326:-0.14999210867582144:0.0013208308948925995:-0.011112696751338025:1.009791865856445

(use sRGB degamma and gamma again)

TacoEarth commented 3 years ago

Thank you so much! It works perfectly. Also to answer your question, I rebooted and found no difference in EDID. Perhaps the driver just bypasses all flags or something? I have no clue, but these work perfectly, thanks a lot again!

Probotector commented 3 years ago

Thank you so much! It works perfectly. Also to answer your question, I rebooted and found no difference in EDID. Perhaps the driver just bypasses all flags or something? I have no clue, but these work perfectly, thanks a lot again!

Can you explain how you have applied matrix values ​​in linux? Step by Step please

In the future I want to buy a AMD card and probability I need to do the same thing, because my monitor don't have sRGB clamp

Thank you

TacoEarth commented 3 years ago

What I did was:

  1. Built this using CMake and installed all the required libraries(libdrm and libxrandr in my case)
  2. Put the build in my home folder.
  3. Create an auto-start command /home/<username>/cmdemo -o <output name> -d srgb -c <yourvalues> -r srgb
  4. More tools are listed in the help.txt of this program if you need them.
  5. Note that the values are in a 3x3 matrix format, so you'll enter them like this f:f:f:f:f:f:f:f:f
  6. Optional - you can set up a key-bind to run the command /home/<username>/cmdemo -o <output name> -d srgb -c id -r srgb for it to reset the CTM to default. Procedure for this depends on your distro.

alternatively you can add cmdemo to your PATH and use it without \home\

And as to how to calculate them, I have no idea.

Probotector commented 3 years ago

And as to how to calculate them, I have no idea.

Thank you very much, I don't have an AMD graphics card, but my friend does and it works perfectly with your values.

Now finally, I need ledoge (one more time :P) to calculate the values based on the monitor EDID.

Could you please do it?

Thanks to both of you


Screenshot_20211026_193024

Screen 0: minimum 8 x 8, current 2560 x 1440, maximum 32767 x 32767 DVI-D-0 disconnected (normal left inverted right x axis y axis) Identifier: 0x1bd Timestamp: 49580 Subpixel: unknown Clones:
CRTCs: 0 1 2 3 Transform: 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 filter:
CTM: 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0
0 1
CscMatrix: 65536 0 0 0 0 65536 0 0 0 0 65536 0
BorderDimensions: 4
supported: 4 Border: 0 0 0 0
range: (0, 65535) SignalFormat: TMDS
supported: TMDS ConnectorType: DVI-D
ConnectorNumber: 0
_ConnectorLocation: 0
non-desktop: 0
supported: 0, 1 HDMI-0 disconnected (normal left inverted right x axis y axis) Identifier: 0x1be Timestamp: 49580 Subpixel: unknown Clones:
CRTCs: 0 1 2 3 Transform: 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 filter:
CTM: 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0
0 1
CscMatrix: 65536 0 0 0 0 65536 0 0 0 0 65536 0
BorderDimensions: 4
supported: 4 Border: 0 0 0 0
range: (0, 65535) SignalFormat: TMDS
supported: TMDS ConnectorType: HDMI
ConnectorNumber: 3
_ConnectorLocation: 3
non-desktop: 0
supported: 0, 1 HDMI-1 disconnected (normal left inverted right x axis y axis) Identifier: 0x1bf Timestamp: 49580 Subpixel: unknown Clones:
CRTCs: 0 1 2 3 Transform: 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 filter:
CTM: 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0
0 1
CscMatrix: 65536 0 0 0 0 65536 0 0 0 0 65536 0
BorderDimensions: 4
supported: 4 Border: 0 0 0 0
range: (0, 65535) SignalFormat: TMDS
supported: TMDS ConnectorType: HDMI
ConnectorNumber: 4
_ConnectorLocation: 4
non-desktop: 0
supported: 0, 1 DP-0 disconnected (normal left inverted right x axis y axis) Identifier: 0x1c0 Timestamp: 49580 Subpixel: unknown Clones:
CRTCs: 0 1 2 3 Transform: 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 filter:
CTM: 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0
0 1
CscMatrix: 65536 0 0 0 0 65536 0 0 0 0 65536 0
BorderDimensions: 4
supported: 4 Border: 0 0 0 0
range: (0, 65535) SignalFormat: DisplayPort
supported: DisplayPort ConnectorType: DisplayPort
ConnectorNumber: 2
_ConnectorLocation: 2
non-desktop: 0
supported: 0, 1 DP-1 disconnected (normal left inverted right x axis y axis) Identifier: 0x1c1 Timestamp: 49580 Subpixel: unknown Clones:
CRTCs: 0 1 2 3 Transform: 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 filter:
CTM: 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0
0 1
CscMatrix: 65536 0 0 0 0 65536 0 0 0 0 65536 0
BorderDimensions: 4
supported: 4 Border: 0 0 0 0
range: (0, 65535) SignalFormat: TMDS
supported: TMDS ConnectorType: DisplayPort
ConnectorNumber: 2
_ConnectorLocation: 2
non-desktop: 0
supported: 0, 1 DP-2 connected primary 2560x1440+0+0 (0x1c3) normal (normal left inverted right x axis y axis) 597mm x 336mm Identifier: 0x1c2 Timestamp: 49580 Subpixel: unknown Gamma: 1.0:1.0:1.0 Brightness: 1.0 Clones:
CRTC: 0 CRTCs: 0 1 2 3 Transform: 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 filter:
CTM: 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0
0 1
CscMatrix: 65536 0 0 0 0 65536 0 0 0 0 65536 0
EDID:
00ffffffffffff0010acd9414c353436 231e0104b53c22783b8cb5af4f43ab26 0e5054a54b00d100d1c0b300a9408180 8100714fe1c0565e00a0a0a029503020 350055502100001a000000ff00463148 423032330a2020202020000000fc0044 454c4c205332373231444746000000fd 0030a5fafa41010a20202020202001b2 020337f1513f101f2005140413121103 02010607151623090707830100006d1a 0000020b30a5000f623d623de305c000 e606050162623ef4fb0050a0a0285008 20680055502100001a40e7006aa0a067 500820980455502100001a6fc200a0a0 a055503020350055502100001a000000 000000000000000000000000000000a5 BorderDimensions: 4
supported: 4 Border: 0 0 0 0
range: (0, 65535) SignalFormat: DisplayPort
supported: DisplayPort ConnectorType: DisplayPort
ConnectorNumber: 1
_ConnectorLocation: 1
non-desktop: 0
supported: 0, 1 2560x1440 (0x1c3) 241.500MHz +HSync -VSync *current +preferred h: width 2560 start 2608 end 2640 total 2720 skew 0 clock 88.79KHz v: height 1440 start 1443 end 1448 total 1481 clock 59.95Hz 2560x1440 (0x1c4) 645.000MHz +HSync -VSync h: width 2560 start 2568 end 2600 total 2640 skew 0 clock 244.32KHz v: height 1440 start 1446 end 1454 total 1480 clock 165.08Hz 2560x1440 (0x1c5) 592.000MHz +HSync -VSync h: width 2560 start 2568 end 2600 total 2666 skew 0 clock 222.06KHz v: height 1440 start 1465 end 1473 total 1543 clock 143.91Hz 2560x1440 (0x1c6) 497.750MHz +HSync -VSync h: width 2560 start 2608 end 2640 total 2720 skew 0 clock 183.00KHz v: height 1440 start 1443 end 1448 total 1525 clock 120.00Hz 2048x1152 (0x1c7) 162.000MHz +HSync +VSync h: width 2048 start 2074 end 2154 total 2250 skew 0 clock 72.00KHz v: height 1152 start 1153 end 1156 total 1200 clock 60.00Hz 1920x1200 (0x1c8) 193.250MHz -HSync +VSync h: width 1920 start 2056 end 2256 total 2592 skew 0 clock 74.56KHz v: height 1200 start 1203 end 1209 total 1245 clock 59.88Hz 1920x1080 (0x1c9) 296.700MHz +HSync +VSync h: width 1920 start 2008 end 2052 total 2200 skew 0 clock 134.86KHz v: height 1080 start 1084 end 1089 total 1125 clock 119.88Hz 1920x1080 (0x1ca) 148.500MHz +HSync +VSync h: width 1920 start 2008 end 2052 total 2200 skew 0 clock 67.50KHz v: height 1080 start 1084 end 1089 total 1125 clock 60.00Hz 1920x1080 (0x1cb) 148.350MHz +HSync +VSync h: width 1920 start 2008 end 2052 total 2200 skew 0 clock 67.43KHz v: height 1080 start 1084 end 1089 total 1125 clock 59.94Hz 1920x1080 (0x1cc) 148.500MHz +HSync +VSync h: width 1920 start 2448 end 2492 total 2640 skew 0 clock 56.25KHz v: height 1080 start 1084 end 1089 total 1125 clock 50.00Hz 1920x1080 (0x1cd) 74.180MHz +HSync +VSync h: width 1920 start 2558 end 2602 total 2750 skew 0 clock 26.97KHz v: height 1080 start 1084 end 1089 total 1125 clock 23.98Hz 1680x1050 (0x1ce) 146.250MHz -HSync +VSync h: width 1680 start 1784 end 1960 total 2240 skew 0 clock 65.29KHz v: height 1050 start 1053 end 1059 total 1089 clock 59.95Hz 1600x1200 (0x1cf) 162.000MHz +HSync +VSync h: width 1600 start 1664 end 1856 total 2160 skew 0 clock 75.00KHz v: height 1200 start 1201 end 1204 total 1250 clock 60.00Hz 1280x1024 (0x1d0) 135.000MHz +HSync +VSync h: width 1280 start 1296 end 1440 total 1688 skew 0 clock 79.98KHz v: height 1024 start 1025 end 1028 total 1066 clock 75.02Hz 1280x1024 (0x1d1) 108.000MHz +HSync +VSync h: width 1280 start 1328 end 1440 total 1688 skew 0 clock 63.98KHz v: height 1024 start 1025 end 1028 total 1066 clock 60.02Hz 1280x800 (0x1d2) 83.500MHz -HSync +VSync h: width 1280 start 1352 end 1480 total 1680 skew 0 clock 49.70KHz v: height 800 start 803 end 809 total 831 clock 59.81Hz 1280x720 (0x1d3) 74.180MHz +HSync +VSync h: width 1280 start 1390 end 1430 total 1650 skew 0 clock 44.96KHz v: height 720 start 725 end 730 total 750 clock 59.94Hz 1280x720 (0x1d4) 74.250MHz +HSync +VSync h: width 1280 start 1720 end 1760 total 1980 skew 0 clock 37.50KHz v: height 720 start 725 end 730 total 750 clock 50.00Hz 1152x864 (0x1d5) 108.000MHz +HSync +VSync h: width 1152 start 1216 end 1344 total 1600 skew 0 clock 67.50KHz v: height 864 start 865 end 868 total 900 clock 75.00Hz 1024x768 (0x1d6) 78.750MHz +HSync +VSync h: width 1024 start 1040 end 1136 total 1312 skew 0 clock 60.02KHz v: height 768 start 769 end 772 total 800 clock 75.03Hz 1024x768 (0x1d7) 65.000MHz -HSync -VSync h: width 1024 start 1048 end 1184 total 1344 skew 0 clock 48.36KHz v: height 768 start 771 end 777 total 806 clock 60.00Hz 800x600 (0x1d8) 49.500MHz +HSync +VSync h: width 800 start 816 end 896 total 1056 skew 0 clock 46.88KHz v: height 600 start 601 end 604 total 625 clock 75.00Hz 800x600 (0x1d9) 40.000MHz +HSync +VSync h: width 800 start 840 end 968 total 1056 skew 0 clock 37.88KHz v: height 600 start 601 end 605 total 628 clock 60.32Hz 720x576 (0x1da) 27.000MHz -HSync -VSync h: width 720 start 732 end 796 total 864 skew 0 clock 31.25KHz v: height 576 start 581 end 586 total 625 clock 50.00Hz 720x480 (0x1db) 27.000MHz -HSync -VSync h: width 720 start 736 end 798 total 858 skew 0 clock 31.47KHz v: height 480 start 489 end 495 total 525 clock 59.94Hz 640x480 (0x1dc) 31.500MHz -HSync -VSync h: width 640 start 656 end 720 total 840 skew 0 clock 37.50KHz v: height 480 start 481 end 484 total 500 clock 75.00Hz 640x480 (0x1dd) 25.175MHz -HSync -VSync h: width 640 start 656 end 752 total 800 skew 0 clock 31.47KHz v: height 480 start 490 end 492 total 525 clock 59.94Hz 640x480 (0x1de) 25.170MHz -HSync -VSync h: width 640 start 656 end 752 total 800 skew 0 clock 31.46KHz v: height 480 start 490 end 492 total 525 clock 59.93Hz DP-3 disconnected (normal left inverted right x axis y axis) Identifier: 0x1df Timestamp: 49580 Subpixel: unknown Clones:
CRTCs: 0 1 2 3 Transform: 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 filter:
CTM: 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0
0 1
CscMatrix: 65536 0 0 0 0 65536 0 0 0 0 65536 0
BorderDimensions: 4
supported: 4 Border: 0 0 0 0
range: (0, 65535) SignalFormat: TMDS
supported: TMDS ConnectorType: DisplayPort
ConnectorNumber: 1
_ConnectorLocation: 1
non-desktop: 0
supported: 0, 1

ledoge commented 3 years ago

@Probotector Here you go:

0.8339032664419913:0.16906645615347132:-0.002969722595462687:0.046433418187247666:0.94836533975325:0.005201242059502405:0.012442034400465464:0.0497391630895853:0.9378188025099494

The code for calculating those values based on the RGB primary coordinates is here – just pass the coordinates as six separate arguments in the order it tells you and it should work.

Probotector commented 3 years ago

Thank you so much dude, you are a hero :+1:

Now I must buy a AMD graphic card :/

TheFeelTrain commented 2 years ago

I can't figure out how to get MathNet.Numerics working on Linux to run the .cs file. You still down to do the calculations? Thank you!

Screenshot_20220213_060115 Screenshot_20220213_055901

Screen 0: minimum 8 x 8, current 2560 x 1440, maximum 32767 x 32767
HDMI-0 disconnected (normal left inverted right x axis y axis)
        Identifier: 0x1bc
        Timestamp:  162858081
        Subpixel:   unknown
        Clones:    
        CRTCs:      0 1 2 3
        Transform:  1.000000 0.000000 0.000000
                    0.000000 1.000000 0.000000
                    0.000000 0.000000 1.000000
                   filter: 
        CTM: 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 
                0 1 
        CscMatrix: 65536 0 0 0 0 65536 0 0 0 0 65536 0 
        BorderDimensions: 4 
                supported: 4
        Border: 0 0 0 0 
                range: (0, 65535)
        SignalFormat: TMDS 
                supported: TMDS
        ConnectorType: HDMI 
        ConnectorNumber: 3 
        _ConnectorLocation: 3 
        non-desktop: 0 
                supported: 0, 1
DP-0 connected primary 2560x1440+0+0 (0x1c1) normal (normal left inverted right x axis y axis) 597mm x 336mm
        Identifier: 0x1bd
        Timestamp:  162858081
        Subpixel:   unknown
        Gamma:      0.99:1.0:0.98
        Brightness: 1.0
        Clones:    
        CRTC:       0
        CRTCs:      0 1 2 3
        Transform:  1.000000 0.000000 0.000000
                    0.000000 1.000000 0.000000
                    0.000000 0.000000 1.000000
                   filter: 
        EDID: 
                00ffffffffffff0010acd9414c534a41
                261e0104b53c22783b8cb5af4f43ab26
                0e5054a54b00d100d1c0b300a9408180
                8100714fe1c0565e00a0a0a029503020
                350055502100001a000000ff00325a30
                585631330a2020202020000000fc0044
                454c4c205332373231444746000000fd
                0030a5fafa41010a2020202020200138
                02031ef1513f101f2005140413121103
                0201060715162309070783010000f4fb
                0050a0a028500820680055502100001a
                40e7006aa0a067500820980455502100
                001a6fc200a0a0a05550302035005550
                2100001a000000000000000000000000
                00000000000000000000000000000000
                00000000000000000000000000000010
        _ICC_PROFILE: 0 15 254 208 97 114 103 108 2 32 0 0 109 110 116 114 
                82 71 66 32 88 89 90 32 7 230 0 2 0 12 0 14 
                0 46 0 18 97 99 115 112 42 110 105 120 0 0 0 0 
                0 0 172 16 0 0 65 217 0 0 0 0 0 0 0 0 
                0 0 0 0 0 0 246 214 0 1 0 0 0 0 211 45 
                97 114 103 108 176 113 42 120 170 80 81 98 146 143 225 64 
                166 195 191 56 0 0 0 0 0 0 0 0 0 0 0 0 
                0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
                0 0 0 26 100 101 115 99 0 0 1 188 0 0 1 22 
                99 112 114 116 0 0 2 212 0 0 0 74 100 109 110 100 
                0 0 3 32 0 0 0 101 100 109 100 100 0 0 3 136 
                0 0 0 104 108 117 109 105 0 0 3 240 0 0 0 20 
                119 116 112 116 0 0 4 4 0 0 0 20 98 107 112 116 
                0 0 4 24 0 0 0 20 99 108 114 116 0 0 4 44 
                0 0 0 126 118 99 103 116 0 0 4 172 0 0 6 18 
                65 50 66 48 0 0 10 192 0 3 170 122 66 50 65 48 
                0 3 181 60 0 3 176 122 116 97 114 103 0 7 101 184 
                0 1 52 57 68 101 118 68 0 7 101 184 0 1 52 57 
                67 73 69 68 0 7 101 184 0 1 52 57 97 114 116 115 
                0 8 153 244 0 0 0 44 114 88 89 90 0 8 154 32 
                0 0 0 20 103 88 89 90 0 8 154 52 0 0 0 20 
                98 88 89 90 0 8 154 72 0 0 0 20 114 84 82 67 
                0 8 154 92 0 0 0 14 103 84 82 67 0 8 154 92 
                0 0 0 14 98 84 82 67 0 8 154 92 0 0 0 14 
                65 50 66 49 0 8 154 108 0 3 170 122 66 50 65 49 
        CTM: 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 
                0 1 
        CscMatrix: 65536 0 0 0 0 65536 0 0 0 0 65536 0 
        BorderDimensions: 4 
                supported: 4
        Border: 0 0 0 0 
                range: (0, 65535)
        SignalFormat: DisplayPort 
                supported: DisplayPort
        ConnectorType: DisplayPort 
        ConnectorNumber: 2 
        _ConnectorLocation: 2 
        non-desktop: 0 
                supported: 0, 1
  2560x1440 (0x1be) 241.500MHz +HSync -VSync +preferred
        h: width  2560 start 2608 end 2640 total 2720 skew    0 clock  88.79KHz
        v: height 1440 start 1443 end 1448 total 1481           clock  59.95Hz
  2560x1440 (0x1bf) 645.000MHz +HSync -VSync
        h: width  2560 start 2568 end 2600 total 2640 skew    0 clock 244.32KHz
        v: height 1440 start 1446 end 1454 total 1480           clock 165.08Hz
  2560x1440 (0x1c0) 592.000MHz +HSync -VSync
        h: width  2560 start 2568 end 2600 total 2666 skew    0 clock 222.06KHz
        v: height 1440 start 1465 end 1473 total 1543           clock 143.91Hz
  2560x1440 (0x1c1) 497.750MHz +HSync -VSync *current
        h: width  2560 start 2608 end 2640 total 2720 skew    0 clock 183.00KHz
        v: height 1440 start 1443 end 1448 total 1525           clock 120.00Hz
  2048x1152 (0x1c2) 162.000MHz +HSync +VSync
        h: width  2048 start 2074 end 2154 total 2250 skew    0 clock  72.00KHz
        v: height 1152 start 1153 end 1156 total 1200           clock  60.00Hz
  1920x1200 (0x1c3) 193.250MHz -HSync +VSync
        h: width  1920 start 2056 end 2256 total 2592 skew    0 clock  74.56KHz
        v: height 1200 start 1203 end 1209 total 1245           clock  59.88Hz
  1920x1080 (0x1c4) 296.700MHz +HSync +VSync
        h: width  1920 start 2008 end 2052 total 2200 skew    0 clock 134.86KHz
        v: height 1080 start 1084 end 1089 total 1125           clock 119.88Hz
  1920x1080 (0x1c5) 148.500MHz +HSync +VSync
        h: width  1920 start 2008 end 2052 total 2200 skew    0 clock  67.50KHz
        v: height 1080 start 1084 end 1089 total 1125           clock  60.00Hz
  1920x1080 (0x1c6) 148.350MHz +HSync +VSync
        h: width  1920 start 2008 end 2052 total 2200 skew    0 clock  67.43KHz
        v: height 1080 start 1084 end 1089 total 1125           clock  59.94Hz
  1920x1080 (0x1c7) 148.500MHz +HSync +VSync
        h: width  1920 start 2448 end 2492 total 2640 skew    0 clock  56.25KHz
        v: height 1080 start 1084 end 1089 total 1125           clock  50.00Hz
  1920x1080 (0x1c8) 74.180MHz +HSync +VSync
        h: width  1920 start 2558 end 2602 total 2750 skew    0 clock  26.97KHz
        v: height 1080 start 1084 end 1089 total 1125           clock  23.98Hz
  1680x1050 (0x1c9) 146.250MHz -HSync +VSync
        h: width  1680 start 1784 end 1960 total 2240 skew    0 clock  65.29KHz
        v: height 1050 start 1053 end 1059 total 1089           clock  59.95Hz
  1600x1200 (0x1ca) 162.000MHz +HSync +VSync
        h: width  1600 start 1664 end 1856 total 2160 skew    0 clock  75.00KHz
        v: height 1200 start 1201 end 1204 total 1250           clock  60.00Hz
  1280x1024 (0x1cb) 135.000MHz +HSync +VSync
        h: width  1280 start 1296 end 1440 total 1688 skew    0 clock  79.98KHz
        v: height 1024 start 1025 end 1028 total 1066           clock  75.02Hz
  1280x1024 (0x1cc) 108.000MHz +HSync +VSync
        h: width  1280 start 1328 end 1440 total 1688 skew    0 clock  63.98KHz
        v: height 1024 start 1025 end 1028 total 1066           clock  60.02Hz
  1280x800 (0x1cd) 83.500MHz -HSync +VSync
        h: width  1280 start 1352 end 1480 total 1680 skew    0 clock  49.70KHz
        v: height  800 start  803 end  809 total  831           clock  59.81Hz
  1280x720 (0x1ce) 74.180MHz +HSync +VSync
        h: width  1280 start 1390 end 1430 total 1650 skew    0 clock  44.96KHz
        v: height  720 start  725 end  730 total  750           clock  59.94Hz
  1280x720 (0x1cf) 74.250MHz +HSync +VSync
        h: width  1280 start 1720 end 1760 total 1980 skew    0 clock  37.50KHz
        v: height  720 start  725 end  730 total  750           clock  50.00Hz
  1152x864 (0x1d0) 108.000MHz +HSync +VSync
        h: width  1152 start 1216 end 1344 total 1600 skew    0 clock  67.50KHz
        v: height  864 start  865 end  868 total  900           clock  75.00Hz
  1024x768 (0x1d1) 78.750MHz +HSync +VSync
        h: width  1024 start 1040 end 1136 total 1312 skew    0 clock  60.02KHz
        v: height  768 start  769 end  772 total  800           clock  75.03Hz
  1024x768 (0x1d2) 65.000MHz -HSync -VSync
        h: width  1024 start 1048 end 1184 total 1344 skew    0 clock  48.36KHz
        v: height  768 start  771 end  777 total  806           clock  60.00Hz
  800x600 (0x1d3) 49.500MHz +HSync +VSync
        h: width   800 start  816 end  896 total 1056 skew    0 clock  46.88KHz
        v: height  600 start  601 end  604 total  625           clock  75.00Hz
  800x600 (0x1d4) 40.000MHz +HSync +VSync
        h: width   800 start  840 end  968 total 1056 skew    0 clock  37.88KHz
        v: height  600 start  601 end  605 total  628           clock  60.32Hz
  720x576 (0x1d5) 27.000MHz -HSync -VSync
        h: width   720 start  732 end  796 total  864 skew    0 clock  31.25KHz
        v: height  576 start  581 end  586 total  625           clock  50.00Hz
  720x480 (0x1d6) 27.000MHz -HSync -VSync
        h: width   720 start  736 end  798 total  858 skew    0 clock  31.47KHz
        v: height  480 start  489 end  495 total  525           clock  59.94Hz
  640x480 (0x1d7) 31.500MHz -HSync -VSync
        h: width   640 start  656 end  720 total  840 skew    0 clock  37.50KHz
        v: height  480 start  481 end  484 total  500           clock  75.00Hz
  640x480 (0x1d8) 25.175MHz -HSync -VSync
        h: width   640 start  656 end  752 total  800 skew    0 clock  31.47KHz
        v: height  480 start  490 end  492 total  525           clock  59.94Hz
  640x480 (0x1d9) 25.170MHz -HSync -VSync
        h: width   640 start  656 end  752 total  800 skew    0 clock  31.46KHz
        v: height  480 start  490 end  492 total  525           clock  59.93Hz
DP-1 disconnected (normal left inverted right x axis y axis)
        Identifier: 0x1da
        Timestamp:  162858081
        Subpixel:   unknown
        Clones:    
        CRTCs:      0 1 2 3
        Transform:  1.000000 0.000000 0.000000
                    0.000000 1.000000 0.000000
                    0.000000 0.000000 1.000000
                   filter: 
        CTM: 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 
                0 1 
        CscMatrix: 65536 0 0 0 0 65536 0 0 0 0 65536 0 
        BorderDimensions: 4 
                supported: 4
        Border: 0 0 0 0 
                range: (0, 65535)
        SignalFormat: TMDS 
                supported: TMDS
        ConnectorType: DisplayPort 
        ConnectorNumber: 2 
        _ConnectorLocation: 2 
        non-desktop: 0 
                supported: 0, 1
DP-2 disconnected (normal left inverted right x axis y axis)
        Identifier: 0x1db
        Timestamp:  162858081
        Subpixel:   unknown
        Clones:    
        CRTCs:      0 1 2 3
        Transform:  1.000000 0.000000 0.000000
                    0.000000 1.000000 0.000000
                    0.000000 0.000000 1.000000
                   filter: 
        CTM: 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 
                0 1 
        CscMatrix: 65536 0 0 0 0 65536 0 0 0 0 65536 0 
        BorderDimensions: 4 
                supported: 4
        Border: 0 0 0 0 
                range: (0, 65535)
        SignalFormat: DisplayPort 
                supported: DisplayPort
        ConnectorType: DisplayPort 
        ConnectorNumber: 1 
        _ConnectorLocation: 1 
        non-desktop: 0 
                supported: 0, 1
DP-3 disconnected (normal left inverted right x axis y axis)
        Identifier: 0x1dc
        Timestamp:  162858081
        Subpixel:   unknown
        Clones:    
        CRTCs:      0 1 2 3
        Transform:  1.000000 0.000000 0.000000
                    0.000000 1.000000 0.000000
                    0.000000 0.000000 1.000000
                   filter: 
        CTM: 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 
                0 1 
        CscMatrix: 65536 0 0 0 0 65536 0 0 0 0 65536 0 
        BorderDimensions: 4 
                supported: 4
        Border: 0 0 0 0 
                range: (0, 65535)
        SignalFormat: TMDS 
                supported: TMDS
        ConnectorType: DisplayPort 
        ConnectorNumber: 1 
        _ConnectorLocation: 1 
        non-desktop: 0 
                supported: 0, 1
DP-4 disconnected (normal left inverted right x axis y axis)
        Identifier: 0x1dd
        Timestamp:  162858081
        Subpixel:   unknown
        Clones:    
        CRTCs:      0 1 2 3
        Transform:  1.000000 0.000000 0.000000
                    0.000000 1.000000 0.000000
                    0.000000 0.000000 1.000000
                   filter: 
        CTM: 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 
                0 1 
        CscMatrix: 65536 0 0 0 0 65536 0 0 0 0 65536 0 
        BorderDimensions: 4 
                supported: 4
        Border: 0 0 0 0 
                range: (0, 65535)
        SignalFormat: DisplayPort 
                supported: DisplayPort
        ConnectorType: DisplayPort 
        ConnectorNumber: 0 
        _ConnectorLocation: 0 
        non-desktop: 0 
                supported: 0, 1
DP-5 disconnected (normal left inverted right x axis y axis)
        Identifier: 0x1de
        Timestamp:  162858081
        Subpixel:   unknown
        Clones:    
        CRTCs:      0 1 2 3
        Transform:  1.000000 0.000000 0.000000
                    0.000000 1.000000 0.000000
                    0.000000 0.000000 1.000000
                   filter: 
        CTM: 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 
                0 1 
        CscMatrix: 65536 0 0 0 0 65536 0 0 0 0 65536 0 
        BorderDimensions: 4 
                supported: 4
        Border: 0 0 0 0 
                range: (0, 65535)
        SignalFormat: TMDS 
                supported: TMDS
        ConnectorType: DisplayPort 
        ConnectorNumber: 0 
        _ConnectorLocation: 0 
        non-desktop: 0 
                supported: 0, 1
TheFeelTrain commented 2 years ago

Nevermind I figured it out. For anyone who runs across this in the future, you need to create a project for it to run properly.

  1. Install dotnet (I installed dotnet-host, dotnet-runtime, and dotnet-sdk on Arch)
  2. Create an empty folder and setup a new console-based project with dotnet new console inside of it
  3. Do dotnet add package MathNet.Numerics to get the required library
  4. Copy ledoge's Program.cs file into the folder (overwrite the default generated one)
  5. Run it with dotnet run red_x red_y green_x green_y blue_x blue_y, replacing the variables with the EDID ones from DisplayCAL
ledoge commented 2 years ago

Thanks for providing the steps! I've uploaded an updated version here that does not have any external dependencies, so it should now be a bit easier to get it running.

TheFeelTrain commented 2 years ago

Awesome. That should make it a lot easier. Although unfortunately even though I managed to get the values, the xrandr command makes zero difference for me (as far as I can tell). I know it's "working" because xrandr --verbose does show the updated numbers for CscMatrix, but colors are definitely unchanged. Was there something else I needed to do?

Edit: I've also now just tried putting random values in to see if that does anything, and it doesn't. So it seems like setting the CscMatrix value just does nothing. I'd like to try the cmdemo tool but it seems like that's only for AMD? And I also have no idea what the values are supposed to be or what order they go in.

ledoge commented 2 years ago

It should just work, no idea why it wouldn't. I haven't tested it personally though, so maybe someone else has an idea. Only thing I can think of: Are you sure that you changed the values for the right output, i.e. DP-0 according to the data you posted above?

I don't think that AMD tool can work, since the property it sets has a different name.

TheFeelTrain commented 2 years ago

Yeah it was on DP-0. I'm assuming it's something with my configuration, but it could be any number of things. Maybe it doesn't work on 3000 series? I have a 3070. Or something to do with my nvidia settings. It's such a niche command that when you Google "--set CscMatrix" the only search results are for Nvidia's driver readme files. Not even this Github issue comes up, lol. So I can't really see if other people have this problem and/or if there's a way to fix it. I'm on my own I guess.

TheFeelTrain commented 2 years ago

Okay in hindsight it was kind of obvious. You have to disable "Force Composition Pipeline" in the Nvidia Settings Panel for it to work. Most people who use KDE with Nvidia will probably have this enabled to fix screen tearing, although in the few minutes since disabling it I haven't noticed any issues so maybe that problem no longer exists.

Screenshot_20220215_162802

It is better but still not perfect like TacoEarth's picture. It went from 144% to 123% of sRGB (Before vs. After)

both

I'm pretty sure I used the right values so I guess this is as good as it gets?

brzegorz commented 2 years ago

Hi, I've succesfuly used advice from this thread to get srgb clamp without locking my monitors(AOC 24G2U) brightness. I've decided to try and put the advice in one post, I've got an AMD card:

  1. You need to obtain your colour primaries. You can get them from EDID or icc profile for your monitor. If you haven't created an icc profiel, use the EDID values:
    • Get the "monitor-edid" and "edid-decode" programs
    • Run "monitor-get-edid | edid-decode" in your terminal
    • find "Color Characteristics:" part. It should list primaries in xy format for red, green, and blue. Example: Color Characteristics: Red : 0.6640, 0.3085 Green: 0.2753, 0.6699 Blue : 0.1542, 0.0507
    • If you have created an icc profile for your monitor, get the values from this part of profile information section in DisplayCal: image You're interested in illuminant-relative XYZ, the "xy" part
  2. Now that you have the primaries, you need to calculate the magic numbers for color-demo app. To do so:
    • download program from this link: https://github.com/ledoge/novideo_srgb/files/7420291/Program.zip
    • Install dotnet (I installed dotnet-host, dotnet-runtime, and dotnet-sdk on Arch)
    • Create an empty folder and setup a new console-based project with dotnet new console inside of it
    • Do dotnet add package MathNet.Numerics to get the required library
    • Copy ledoge's Program.cs file into the folder (overwrite the default generated one)
    • Run it with dotnet run red_x red_y green_x green_y blue_x blue_y, replacing the variables with the ones from step 1.
    • you should receive output like this: 0.8744307520477546:0.14605549736866885:-0.02048624941642324:0.029455739104135535:0.9479782452885285:0.02256601560733576:0.0008592768015751144:0.05909040233644789:0.9400503208619772
  3. Now you need to install color-demo-app:
    • run "git clone git://people.freedesktop.org/~hwentland/color-demo-app" in your console
    • run "cd color-demo-app"
    • run "make"
  4. The final step is using the color-demo-app to actually clamp your colours:
    • find your display name by running "xrandr". For me it's DisplayPort-0
    • in terminal from step 3, run "./cmdemo -o -d srgb -c f:f:f:f:f:f -r srgb". Substitute output from step 2 for the "f:f:f:f:f:f" 4a. This is not persistent, i.e. you need to repeat it each time you reboot. Doing it automatically is distribution-dependend and out of scope for this post.
brzegorz commented 2 years ago

Is there anything that can be done for swaywm and/or GNOME on Wayland?

larrryfisherthefisherman commented 2 years ago

When I go to run color demo app this is what it says and it doesn't change the monitor.

here are the information from displaycal https://i.imgur.com/zzFcPgm.png

Running this gives me this output : dotnet run 0.6394 0.3323 0.3063 0.5973 0.1448 0.0646 1.0020678519127821:-0.03181436048693658:0.029746508574155006:-0.0032067891617156277:1.0201185206934493:-0.016911731531733816:0.0014683103018774193:0.0034451457709891 026:0.9950865439271332

[fisher@DESKTOP- color-demo-app]$ ./cmdemo -o DP-0 -d srgb -c 1.0020678519127821:-0.03181436048693658:0.029746508574155006:-0.0032067891617156277:1.0201185206934493:-0.016911731531733816:0.0014683103018774193:0.0034451457709891026:0.9950865439271332 -r srgb Using srgb degamma curve Using custom CTM: 1.0021:-0.0318:0.0297 -0.0032:1.0201:-0.0169 0.0015:0.0034:0.9951 Using srgb regamma curve Property key 'DEGAMMA_LUT' not found. Failed to set SRGB. 5 [fisher@DESKTOP color-demo-app]$

JustCauseWhyNot commented 2 years ago

Thanks for providing the steps! I've uploaded an updated version here that does not have any external dependencies, so it should now be a bit easier to get it running.

How am I supposed to use this program? You saying it has no other external dependencies makes me think I don't need to use dotnet like other people have used successfully. But when I run ./Program.cs I get output of

./Program.cs: 1: using: not found
: not founds: 1: 
./Program.cs: 2: using: not found
: not founds: 2: 
./Program.cs: 3: using: not found
: not founds: 3: 
: not founds: 4: 
: not founds: 5: 
./Program.cs: 6: namespace: not found
: not founds: 7: {
./Program.cs: 8: public: not found
: not founds: 9: {
./Program.cs: 10: private: not found
: not founds: 10: 
: not founds: 11: 
./Program.cs: 12: Syntax error: "(" unexpected

Edit: Nvm I figured it out. I followed along the dotnet directions. But if it's possible to use this without dotnet please let me know.

A1RM4X commented 1 year ago

Hi!

First thank you very much for your work, this tools is a life saver.

While setting up my multi screens setup, I notice the xandr command or the cmdemo command will only apply the color correction if the screen are setup in landscape mode (normal setting in xrandr).

If the screens are in another configuration mode (portrait left / portrait right / inverted) the settings are not being applied.

Am I missing something or is there any type of known limitation ?

I tried the same screens configuration in Win 10 (screens in landscape and portrait mode) and everything worked fine using the same ICC files.

I am using Arch Kernel 6.0.10 with NVIDIA Driver Version: 525.53

MaximOstapenko commented 1 year ago

@TheFeelTrain @brzegorz @JustCauseWhyNot Hello, does anyone know what I did wrong? But if everything is OK, where can I look at the result of the calculations? My ICC: dotnet run 0.6792 0.3120 0.2703 0.6095 0.1415 0.0648 Ubuntu 20.04.5 Thanks

image_2023-02-04_18-34-41

UPD: i installed dopnet 6 from microsoft correctly and its working

funghetto commented 1 year ago

When I go to run color demo app this is what it says and it doesn't change the monitor.

here are the information from displaycal https://i.imgur.com/zzFcPgm.png

Running this gives me this output : dotnet run 0.6394 0.3323 0.3063 0.5973 0.1448 0.0646 1.0020678519127821:-0.03181436048693658:0.029746508574155006:-0.0032067891617156277:1.0201185206934493:-0.016911731531733816:0.0014683103018774193:0.0034451457709891 026:0.9950865439271332

[fisher@DESKTOP- color-demo-app]$ ./cmdemo -o DP-0 -d srgb -c 1.0020678519127821:-0.03181436048693658:0.029746508574155006:-0.0032067891617156277:1.0201185206934493:-0.016911731531733816:0.0014683103018774193:0.0034451457709891026:0.9950865439271332 -r srgb Using srgb degamma curve Using custom CTM: 1.0021:-0.0318:0.0297 -0.0032:1.0201:-0.0169 0.0015:0.0034:0.9951 Using srgb regamma curve Property key 'DEGAMMA_LUT' not found. Failed to set SRGB. 5 [fisher@DESKTOP color-demo-app]$

I have the same issue on ubuntu, how can we convert that matrix for use with xrandr?

jordi-7 commented 5 months ago

Hi!

First thank you very much for your work, this tools is a life saver.

While setting up my multi screens setup, I notice the xandr command or the cmdemo command will only apply the color correction if the screen are setup in landscape mode (normal setting in xrandr).

If the screens are in another configuration mode (portrait left / portrait right / inverted) the settings are not being applied.

Am I missing something or is there any type of known limitation ?

I tried the same screens configuration in Win 10 (screens in landscape and portrait mode) and everything worked fine using the same ICC files.

I am using Arch Kernel 6.0.10 with NVIDIA Driver Version: 525.53

Same issue for me, did you find a solution?

A1RM4X commented 5 months ago

Nope. To solve it locally I switched the orientation of all my screens.

Good news is that Nvidia is functional with Wayland now and KDE support global ICC profiles. I did not test it yet but this might be my end game.

ziomek64 commented 5 months ago

Nope. To solve it locally I switched the orientation of all my screens.

Good news is that Nvidia is functional with Wayland now and KDE support global ICC profiles. I did not test it yet but this might be my end game.

Hey, just read you comment. On windows I used this program then on x11 xrandr command to change colors. How to achieve this on wayland and kde with those icc profiles? Have you tried it out?

dekomote commented 5 months ago

Nope. To solve it locally I switched the orientation of all my screens. Good news is that Nvidia is functional with Wayland now and KDE support global ICC profiles. I did not test it yet but this might be my end game.

Hey, just read you comment. On windows I used this program then on x11 xrandr command to change colors. How to achieve this on wayland and kde with those icc profiles? Have you tried it out?

https://zamundaaa.github.io/wayland/2024/05/11/more-hdr-and-color.html

We are getting something similar to novideo_srgb in KDE 6.1 soon.

ziomek64 commented 5 months ago

Nope. To solve it locally I switched the orientation of all my screens. Good news is that Nvidia is functional with Wayland now and KDE support global ICC profiles. I did not test it yet but this might be my end game.

Hey, just read you comment. On windows I used this program then on x11 xrandr command to change colors. How to achieve this on wayland and kde with those icc profiles? Have you tried it out?

https://zamundaaa.github.io/wayland/2024/05/11/more-hdr-and-color.html

We are getting something similar to novideo_srgb in KDE 6.1 soon.

yeah, but I think kde does clamp if you put icc profile in 6.0 too. At least someone told me that, works for me

dekomote commented 5 months ago

yeah, but I think kde does clamp if you put icc profile in 6.0 too. At least someone told me that, works for me

It does! If you have a proper color profile, you won't have any issues really. But after 6.1, it will clamp based on EDID, no need for profiles.