Steam Deck
The Green Nerd 2022년 10월 4일 오전 9시 37분
3
4
2
1
Wrong RGB information signal to external display
It seems (some/most) TV's won't detect that the output of the HDMI signal is Limited RGB, while the output is actually Full RGB. Colors are therefore saturated and have crushed blacks. Changing the HDMI setting of the TV to Full RGB, fixes the issue. I tested this with my Sony and LG. My TV also won't detect it as an game device. I guess this information is missing to from the signal?

Also a good measuring tool is at looking at settings --> Display --> Nightmode --> Look at the grey scale. The two left blocks should be a different color, if not = wrong RGB setting.

This occurs with both my official Steam Deck Dock, as my cheap dock.

p.s. seems I am not the only one: https://steamcommunity.com/app/1675200/discussions/0/3319737272513115983/ But strange that this bug is only noticed now.

To illustrate the issue I made some pictures:
TV set to Auto mode = Wrong, look at the two black blocks. One should be lighter.
https://steamcommunity.com/sharedfiles/filedetails/?id=2874279265
TV set to Full RGB = Correct, look at the two left black blocks. One is a bit brighter.
https://steamcommunity.com/sharedfiles/filedetails/?id=2874279369

I also made an Reddit (https://www.reddit.com/r/SteamDeck/comments/y3r3ys/change_your_rgbrange_setting_on_your_tv_always/) post for this, to help people with this issue. It seems more people thought it looked off when connected to the TV. But more people had issues determining the correct setting. If it's not possible to fix this by an update, maybe add a disclaimer?
The Green Nerd 님이 마지막으로 수정; 2022년 10월 24일 오전 2시 51분
< >
93개 댓글 중 46-60개 표시
Needs Loomis 2023년 11월 9일 오후 1시 16분 
Nope, the device hailed as the best for emulation is still the worst for old TVs 😐

The new shader is great news. I wonder if something like that could be implemented through a plug-in, might be worth asking the VibrantDeck guy, he was entertaining external support a while ago.
deaddoof 2023년 11월 9일 오후 2시 21분 
Galaxy010님이 먼저 게시:
Does anyone know if there have been any updates on this bug yet? It's been reported for over a year and I still have it. It's a real shame because I want to use my Deck docked primarily, but I can't see jack in any dark area of any game

This bug will never be fixed because nobody here spent effort to provide their TV edid information to the proper parties.

You should be contacting both freedesktop and valve support.

https://gitlab.freedesktop.org/drm/amd/-/issues

When Linux people talk about support, they talk about being able to talk to a party to who merge fixes upstream. Not hope this bug gets magically fixed in the future.
Galaxy010 2023년 11월 10일 오후 4시 01분 
Isn't this forum board though to report bugs? If it isn't, do you know how I submit a bug report to Valve
deaddoof 2023년 11월 10일 오후 5시 38분 
Galaxy010님이 먼저 게시:
Isn't this forum board though to report bugs? If it isn't, do you know how I submit a bug report to Valve

You can report the bug here, but the problem is that you cannot attach edid bin files here. You can attach them in Valve support chat.

This stuff needs per hardware fixes and database of known crappy hardware. You need to be reporting on a bug forum that can store the information. Freedesktop gitlab and steam support are valid choices.

Help (top menu) -> Steam Support -> Steam Hardware. You need to dump edid file and link this thread I guess.

$ find /sys -name edid /sys/devices/pci0000:00/0000:00:08.1/0000:04:00.0/drm/card1/card1-eDP-1/edid /sys/devices/pci0000:00/0000:00:08.1/0000:04:00.0/drm/card1/card1-DP-1/edid

cat /sys/devices/pci0000:00/0000:00:08.1/0000:04:00.0/drm/card1/card1-DP-1/edid > monitor-edid.bin

card1-eDP-1 is the internal screen.

card1-DP-1 should be the external monitor. edid is the bin file.
deaddoof 님이 마지막으로 수정; 2023년 11월 10일 오후 5시 47분
m0 2023년 11월 17일 오후 5시 49분 
Updated to SteamOS 3.5.5 and retested. I can now get correct colors by enabling "External Display Safe Mode" from the advanced display options which forces 16:10 1280x800@60. Of course, this comes at the cost of scaling issues and black borders on potentially all edges of the screen because TVs are 16:9. Progress has been made, I guess. Please fix the other display modes, colors are still busted on 1080p.
m0 님이 마지막으로 수정; 2023년 11월 17일 오후 5시 56분
Unarelith 2023년 11월 19일 오전 1시 56분 
This is the amdgpu driver bug afaik: https://gitlab.freedesktop.org/drm/amd/-/issues/476
v00d00m4n 2023년 11월 19일 오전 11시 00분 
Ponchos님이 먼저 게시:
I created a workaround for this issue. You can use a shader to convert the output to a limited range.

This is only necessary if your display does not support manually setting the output to full range.

You'll need a couple of things:

Do the following:
  1. Install vkbasalt for steam deck. NOTE: after installing vkBasalt is enabled by default, so any shaders you activate will always be applied, unless you set launch properties to: DISABLE_VKBASALT=1 %command%

  2. Copy the Reshade shaders to ~/.config/reshade/. You should now have a "Shaders" and "Textures" folder within this directory.

  3. Copy the RGBFullToLimited.fx shader to ~/.config/reshade/Shaders

  4. Open ~/.config/vkbasalt/vkbasalt.conf (if it does not exist: copy and rename from vkbasalt.default.conf)

  5. Edit vkbasalt.conf as follows:

    [...] effects = fulltolimited reshadeTexturePath = "/home/deck/.config/reshade/Textures" reshadeIncludePath = "/home/deck/.config/reshade/Shaders" fulltolimited = "/home/deck/.config/reshade/Shaders/RGBFullToLimited.fx" [...]

The deck should now output an image with colors within the 16-235 range and you should no longer have crushed blacks or clipped highlights.

Can you also do script that does the opposite or expand this script with some toggle settings to do conversion in both direction (and preferably with debanding technique implemented in shader to prevent color banding) ?
Or maybe you can implement it as decky plugin as well?

You may wonder why or anyone else would need it?

Well there is a huge problem with 99% of PC ports that im fighing for years (LevelsPlus shader that comes with Reshade legacy shader is one of my attempts to fight this, with a little bit outdated explaination of whats going on with games on PC), most of games are calibrated with limited range of tv in mind, so they should be expanded from limited to full range. Consoles maps 16 to black and 235 to white automatically, so those games looks fine on consoles, but when they ported to PC this almost never got compensated (there are very few games that actually has color range options - recent Resident Evil games and recent Call of Duty games, that calls these options as sRGB and rec709, but basically they mean "Keep full range as is" in case of sRGB, and in case of rec709 it means "expand limited color range to full"), so basically almost every PC port is Limited range game withing full range output, which makes black color that supposed to be 0 - a 16 and dark grey, and white which supposed to be 255 is 235 which is bright grey!

So majority of PC games always playing with washed out dim colors in almost every game because color range not getting explanded from limited to full in games and you are getting limited contented withing full output.


On TV if its used as display its easy to beat by simply setting tv to limited, despite pc video card ouputs full signal. So 16 will become 0 and 235 will become 255 when PC is set to full and TV is set to limited.

But most of displays dont have such options, so 16 in games stays 16 on display and 235 remains 235 when both PC is set to full ouput and Display is set to full input! Full-Full basically converts nothing.

PC video cards like Nvidia (not sure about AMD, have not used it for ages) does have a Limited ouput option, which is quite useless, because it actually compressing full range into full, and turns 0 to 16 and 255 to 235, and when it signaling to TV that its a limited range, both TV and video card on PC set LIMITED-LIMITED, as tv in case of LIMITED input settings does expansion from limited to full, and it looks exactly the same as FULL-FULL, and you simply compress range on video card and then uncompress it back on TV. But games already has compressed limited range baked into its color processing pipeline be it some color config or some tonemapping shader, so this does not help to make games looks right like they do on consoles!

Now lets get to steam deck! Steam deck also suffering from this issue - majority of PC games still already has compressed limited range baked in (exceptions are only recent games like RE and COD series where you can set re709 to actually expand color range from limited to full, which will turn 16 to 0 and 235 to 255! And another exception are old PC exclusive games pre 2005 or pre 2000 that was never designed with limited range tv in mind! But if any of them actually has console version, most likely its a port that outputs wrong colors! Also late 90th and early 00th console ports on PC are suffering from greenish matrix like tint due of calibration for NTSC color space, which was not converted to PAL color space which is more reddish! Most notable examples are MGS2, Hitman 2-3-4, Second Sight, etc, they are not supposed to look so green, they should be more grey and blue or red!), so steam deck never displays them correctly, as it has no system level option of forcing limited to full ranage expansion which needs to be done with most of games!

But the bug you are discussing here and trying to fix, actually fixes games that are mostly limited range and need a limited to full expansion to look correct, but it should not be applied to desktop and steam deck's UI, only to game render target. Problem is that only fixes games on external display, but bug is not present on internal display so you have limited range games displayed in full range output which keeps 16 a 16 and 235 a 235 and does not expand them to 0 and 255.

Thats why im asking for script that does opposite of what you did but on internal display and only applied to games but not to steam UI and overlay and not to desktop itself!

Oh i also forgot to mention that many games on PC has problematic UI - while 3d scenes are almost all limited, some pc games actually has UI rendered properly in full range, so calibration pictures in such games usually does not work right as they properly expanded to full range, whild 3d scenes are not. And if you do expansion of 3d scene from limited to full you fixing main game scene but ui can have too dark blacks and too bright whites with some colors crashed out of range 0-255.

But its better to sacrifice UI for proper 3D scenes.

So we actually need a plugin or script for deck that does limited to full expansion in games by turning 16 to 0 and 235 to 255 while only applied to games!

Update:
Totally forgot to mention that HDR ouput in most games is also limited, and almost always requires to do Limited to full expansion even in HDR (in case of 10 bit ouput its 0-1023 range instead of 0-255). Here is my explaination how to fix it from around year ago, it explains whats wrong with HDR on Windows, but steam deck probably does the same:

Additional explanation for fixing SDR games on HDR via SUB B/C on every LG tv models, especially non OLED (nanocell etc) in generic way:
1) Find any good Full-limited color range test pattern image (png preferable), dont use videos as video player may auto fix levels for you and disorient you!
2) Enable SDR mode in Windows
3) Set Full on PC set Limited n TV, set default brightness and contrast in game mode (usually brightness is 50 and contrast is 100)
4) Open test pattern and tweak brightness and contrast until value of 16 is pure black and value of 235 is pure white and you can see anything beyond them
5) Memorize your brightness values (most likely they will be withing rang of 48 and 96-99) or make a photo of settings and always use these values in every mode including HDR
6) Switch from LIMITED to FULL on TV
7) Go to EzAdjust system menu and find SUB B\C (non LG tvs may have something similar), dont touch anything else, or you may screw up your TV!
8) Before changing any settings do a photo of current default settings, SUB B/C is usually 128 128 by default
9) First decrease Contrast unti 16 is pitch black and you cant see anything darker. Then increase brightness until you cant see anything lighter than 235 whic should be pure white.

10) Once you did that black level may shift, not tweak contrast again until you fix 16 to be pitch black again, this may again shift brightness so tweak it again. Repeat couple of times in order until you find perfect balance. Congrats you just forced Limited to Full decompression globally on your TV, which as bonus may help to fix many movies and tv channels on streaming apps where LG for some stupid reason blocks you from changing black and white levels.

11) This setting is equal to forcing limited on TV, so with sub BC tweak like this and tv set to FULL you are imitating same behavior as limited and doing limited to full expansion\decompression. With this setting your HDR mode for native HDR and auto HDR games on windows is not permanently fixed, also your SDR desktop inside HDR will display as proper full. But you will have to tweak SDR brightness on windows and switch HDR on and off and compare test pattern on any phot until it will look the same on SDR and HDR for proper calibration, difference could only be at getting more nits in HDR but color balance and other thins should remain same.

12) This, however will not fix SDR games in HDR mode, as they are still limited, you have to do double expansion to fix them, to enable double expansion turn on Limited mode on TV, in combination with SUB BC tweak this will give you double expansion. Actually we did whole SUB BC tweak just to get ability to do double expansion of limited range.

13) When you play native hdr or autohdr game you should only keep sub bc and should set tv to full, when playing SDR games in HDR mode always set tv to limited. But there is alternative way - always keep limited on TV but when you need to use SDR on HDR games set video card to full output, when you need to use SDR desktop in HDR mode or play native or auto HDR games set video card to limited while keeping sub BC and Limited on tv. This will eliminate 1 of 2 levels of limited to full expansion and will be equal to just keeping SUB BC or Limited alone.

14) It may look like some games crashing black and whites, but its ok. it happens on console too and its intended crash, what you may have saw before crash is out of intended range information that not supposed to be seen (0-15 and 236-255).

15) Dont forget to set brigtnes and contrast to same you memorized before and do calibration of HDR with limited or sbu bc tweak!

Just a number to get the picture.

SDR mode full+full or limited+limited mode:
Desktop bw point 0-255 games bw point 16-235

WIth limited or sub bc on on tv:
Desktop bw point -18 - 278 (range of 0-15 and 236-255 is crashed) games bw point 0-255

HDR mode full+full or limited + limited (numbers are in SDR equivalent which is getting upscaled for HDR but propoptianally is the same):

HDR content native or auto wb point 16-235, SDR desktop in HDR mode also 16-235, SDR games wb point 29-217 (double limited)

WIth limited or only sub bc on on tv:

HDR content native or auto wb point 0-255, SDR desktop in HDR mode also 0-25 SDR games wb point 16-235 (single limited)

Withe limited and sub bc both on tv:

HDR content native or auto wb point -18 - 278 (range of 0-15 and 236-255 is crashed) , SDR desktop in HDR mode also -18 - 278 (range of 0-15 and 236-255 is crashed) SDR games wb point 0-255 (full)


WIth limited or only sub bc both on tv but video card set to limited:

HDR content native or auto wb point 0-255, SDR desktop in HDR mode also 0-25 SDR games wb point 16-235 (single limited)
v00d00m4n 님이 마지막으로 수정; 2023년 11월 19일 오전 11시 13분
deaddoof 2023년 11월 19일 오후 1시 09분 
v00d00m4n님이 먼저 게시:


Can you also do script that does the opposite or expand this script with some toggle settings to do conversion in both direction (and preferably with debanding technique implemented in shader to prevent color banding) ?

Or maybe you can implement it as decky plugin as well?

You may wonder why or anyone else would need it?

Well there is a huge problem with 99% of PC ports that im fighing for years (LevelsPlus shader that comes with Reshade legacy shader is one of my attempts to fight this, with a little bit outdated explaination of whats going on with games on PC), most of games are calibrated with limited range of tv in mind, so they should be expanded from limited to full range. Consoles maps 16 to black and 235 to white automatically, so those games looks fine on consoles, but when they ported to PC this almost never got compensated (there are very few games that actually has color range options - recent Resident Evil games and recent Call of Duty games, that calls these options as sRGB and rec709, but basically they mean "Keep full range as is" in case of sRGB, and in case of rec709 it means "expand limited color range to full"), so basically almost every PC port is Limited range game withing full range output, which makes black color that supposed to be 0 - a 16 and dark grey, and white which supposed to be 255 is 235 which is bright grey!

Are you contribute to wine, proton db, mesa, and game scope? Are you writing bug reports for every game you are seeing these issues?

https://github.com/ValveSoftware/gamescope

https://www.protondb.com/

https://bugs.winehq.org/

https://gitlab.freedesktop.org/mesa/mesa

One-off fixes do not scale. Databases needs to be populated to measure the scope of the issue.
Needs Loomis 2023년 11월 22일 오후 1시 25분 
2
deaddoof님이 먼저 게시:
This stuff needs per hardware fixes and database of known crappy hardware. You need to be reporting on a bug forum that can store the information. Freedesktop gitlab and steam support are valid choices.

Not really, the option to manually choose color output, like almost every console and video card allows, would fix the problem.
Needs Loomis 님이 마지막으로 수정; 2023년 11월 22일 오후 1시 26분
SUM16KWT 2023년 12월 1일 오전 1시 12분 
I FOUND A FIX.

Steam deck connected to an android TV.

I had problems with incorrect colors, very bright whites, and a washed out image. I tried most of the fixes online and it did nothing. even enabling "external display safe mode" did nothing but change the resolution.

The fix I did was to enable "developers mode" on the steam deck and turn on "disable color management" and everything looks great now :)

Also make sure that the color space is set to Full range RGB not Limited nor Auto using the TV settings option menu.
m0 2023년 12월 1일 오전 3시 12분 
SUM16KWT님이 먼저 게시:
I FOUND A FIX.

Steam deck connected to an android TV.

I had problems with incorrect colors, very bright whites, and a washed out image. I tried most of the fixes online and it did nothing. even enabling "external display safe mode" did nothing but change the resolution.

The fix I did was to enable "developers mode" on the steam deck and turn on "disable color management" and everything looks great now :)

Also make sure that the color space is set to Full range RGB not Limited nor Auto using the TV settings option menu.
Turning on "Disable Color Management" from the developer settings only turns off the newly added color temperature settings. This is unrelated to the Full/Limited RGB issues.
CyderChillin 2023년 12월 4일 오전 7시 42분 
How has valve not addressed this issue? It completely breaks one of the main features (docked play) of the deck.

My LG TV has no issues detecting full RGB with my laptop and PC. Only the steam deck has this issue.
deaddoof 2023년 12월 4일 오전 8시 07분 
CyderChillin님이 먼저 게시:
How has valve not addressed this issue? It completely breaks one of the main features (docked play) of the deck.

My LG TV has no issues detecting full RGB with my laptop and PC. Only the steam deck has this issue.

Because you didn't tell Valve your information. Nothing complicated. Give Valve your TV edid and they will fix detection issue. I presume all large display manufacture, OEM, etc have their own internal database.

Needs Loomis님이 먼저 게시:

Not really, the option to manually choose color output, like almost every console and video card allows, would fix the problem.

Ahh personal choice. Personal choice does not solve work on default. Get talking and reporting your bugs. Working on default is always better than person choice. Choice means you can make bad decisions too.
CyderChillin 2023년 12월 4일 오전 10시 21분 
deaddoof님이 먼저 게시:
CyderChillin님이 먼저 게시:
How has valve not addressed this issue? It completely breaks one of the main features (docked play) of the deck.

My LG TV has no issues detecting full RGB with my laptop and PC. Only the steam deck has this issue.

Because you didn't tell Valve your information. Nothing complicated. Give Valve your TV edid and they will fix detection issue. I presume all large display manufacture, OEM, etc have their own internal database.

Needs Loomis님이 먼저 게시:

Not really, the option to manually choose color output, like almost every console and video card allows, would fix the problem.

Ahh personal choice. Personal choice does not solve work on default. Get talking and reporting your bugs. Working on default is always better than person choice. Choice means you can make bad decisions too.

Assumption. I've already posted on github and Bugzilla with requested information.

Also, Valve has enough information and financial resources to figure this out without polling everyone for hardware info. I've never had to do this for any other device that outputs in full RGB.
Unarelith 2023년 12월 4일 오전 10시 39분 
I don't understand this discussion.

The GPU driver doesn't provide the option to change RGB range, it's not entirely up to Valve.

The ticket is here: https://gitlab.freedesktop.org/drm/amd/-/issues/476

It could be nice to get acknowledgement from Valve though.
< >
93개 댓글 중 46-60개 표시
페이지당 표시 개수: 1530 50