psieg / Lightpack

Lightpack and Prismatik open repository
GNU General Public License v3.0
1.56k stars 188 forks source link

Bright colors are clipped when windows 10 HDR color is enabled. #343

Open jespertheend opened 4 years ago

jespertheend commented 4 years ago

When enabling HDR color in the windows 10 settings, bright colors get clipped. It appears like Teamviewer is having similar issues. You can see an image of what a color picker looks like in teamviewer bewow.

It seems like Prismatik is showing the same behaviour. As soon as a color becomes brighter than about rgb 127,127,127 it shows up as completely white in the device tab in prismatik.

I'm not sure if there is a way to fix this, or if it's an issue with the Desktop Duplication API with no workaround.

image

jespertheend commented 4 years ago

It seems like you need to make use of IDXGIOutput6 to make this work. https://stackoverflow.com/questions/56797583/how-to-capture-hdr-framebuffer-in-windows

zomfg commented 4 years ago

I think this is just how the API handles HDR source right now, see here:

DXGI provides a surface that contains a current desktop image through the new IDXGIOutputDuplication::AcquireNextFrame method. The format of the desktop image is always DXGI_FORMAT_B8G8R8A8_UNORM no matter what the current display mode is.

try with WinAPI grabber just to see what happens, it could be same (if they do the same conversion), or even more broken (if they give the raw 2,10,10,10 bit components), or working I guess

goooroooX commented 3 years ago

Just found out that desktop grabbing does not work properly with "Win8 Desktop Duplication" mode and HDR enabled in Windows 10 (heavy colors flickering). Is this limitation/issue by design or can be fixed? BTW, "WinAPI" mode is working fine, but it makes a heavy load on Desktop Windows Manager process. Tnx.

Found related issue: https://github.com/psieg/Lightpack/issues/255

dormancygrace commented 2 years ago

Maybe this one can help? https://docs.microsoft.com/en-us/windows/win32/api/dxgi1_5/ns-dxgi1_5-dxgi_hdr_metadata_hdr10