drm: bridge: dw_hdmi: fix preference of RGB modes over YUV420
[ Upstream commitd3d6b1bf85
] Cheap monitors sometimes advertise YUV modes they don't really have (HDMI specification mandates YUV support so even monitors without actual support will often wrongfully advertise it) which results in YUV matches and user forum complaints of a red tint to light colour display areas in common desktop environments. Moving the default RGB fall-back before YUV selection results in RGB mode matching in most cases, reducing complaints. Fixes:6c3c719936
("drm/bridge: synopsys: dw-hdmi: add bus format negociation") Signed-off-by: Guillaume BRUN <the.cheaterman@gmail.com> Tested-by: Christian Hewitt <christianshewitt@gmail.com> Reviewed-by: Robert Foss <robert.foss@linaro.org> Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org> Link: https://patchwork.freedesktop.org/patch/msgid/20221116143523.2126-1-the.cheaterman@gmail.com Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
Родитель
eb96fd3983
Коммит
807a01a329
|
@ -2594,6 +2594,9 @@ static u32 *dw_hdmi_bridge_atomic_get_output_bus_fmts(struct drm_bridge *bridge,
|
|||
* if supported. In any case the default RGB888 format is added
|
||||
*/
|
||||
|
||||
/* Default 8bit RGB fallback */
|
||||
output_fmts[i++] = MEDIA_BUS_FMT_RGB888_1X24;
|
||||
|
||||
if (max_bpc >= 16 && info->bpc == 16) {
|
||||
if (info->color_formats & DRM_COLOR_FORMAT_YCRCB444)
|
||||
output_fmts[i++] = MEDIA_BUS_FMT_YUV16_1X48;
|
||||
|
@ -2627,9 +2630,6 @@ static u32 *dw_hdmi_bridge_atomic_get_output_bus_fmts(struct drm_bridge *bridge,
|
|||
if (info->color_formats & DRM_COLOR_FORMAT_YCRCB444)
|
||||
output_fmts[i++] = MEDIA_BUS_FMT_YUV8_1X24;
|
||||
|
||||
/* Default 8bit RGB fallback */
|
||||
output_fmts[i++] = MEDIA_BUS_FMT_RGB888_1X24;
|
||||
|
||||
*num_output_fmts = i;
|
||||
|
||||
return output_fmts;
|
||||
|
|
Загрузка…
Ссылка в новой задаче