diff mbox

PROBLEM: EDID regression results in color banding on Lenovo G50 series laptops [fix proposition]

Message ID aedceba6-f3d8-3377-6dd8-398603d5aef2@gmail.com (mailing list archive)
State New, archived
Headers show

Commit Message

Tomasz Papież May 8, 2017, 4:24 p.m. UTC
Since the introduction of kernel 4.8 I've been experiencing color 
banding on my Lenovo G50-80 notebook. I also had reports of the same 
symptoms on the G50-70 model.

I figured out that the problem had been introduced by commit 
210a021dab639694600450c14b877bf3e3240adc

The G50-80's LCD panel supports 6bpc, but is now set to 8bpc,
and the system probably falls back to 6bpc
without any dithering, which result in heavily banded gradients.

I fixed it for myself by adding an EDID quirk for that particular LCD 
panel (see the attached patch). It's unknown to me, however, if there 
are any other panels affected by the issue, so maybe a more general
solution might be desirable.

Comments

Jani Nikula May 9, 2017, 7:50 a.m. UTC | #1
On Mon, 08 May 2017, Tomasz Papież <tmszpp@gmail.com> wrote:
> Since the introduction of kernel 4.8 I've been experiencing color 
> banding on my Lenovo G50-80 notebook. I also had reports of the same 
> symptoms on the G50-70 model.
>
> I figured out that the problem had been introduced by commit 
> 210a021dab639694600450c14b877bf3e3240adc

commit 210a021dab639694600450c14b877bf3e3240adc
Author: Mario Kleiner <mario.kleiner.de@gmail.com>
Date:   Wed Jul 6 12:05:48 2016 +0200

    drm/edid: Set 8 bpc color depth for displays with "DFP 1.x compliant TMDS".

Cc: Mario.


>
> The G50-80's LCD panel supports 6bpc, but is now set to 8bpc,
> and the system probably falls back to 6bpc
> without any dithering, which result in heavily banded gradients.
>
> I fixed it for myself by adding an EDID quirk for that particular LCD 
> panel (see the attached patch). It's unknown to me, however, if there 
> are any other panels affected by the issue, so maybe a more general
> solution might be desirable.
> diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c
> index fad3d44e4642..ee3124bcae87 100644
> --- a/drivers/gpu/drm/drm_edid.c
> +++ b/drivers/gpu/drm/drm_edid.c
> @@ -147,6 +147,9 @@ static const struct edid_quirk {
>  	/* Medion MD 30217 PG */
>  	{ "MED", 0x7b8, EDID_QUIRK_PREFER_LARGE_75 },
>  
> +	/* Fix for Lenovo G50 */
> +	{ "SDC", 18514, EDID_QUIRK_FORCE_6BPC },
> +
>  	/* Panel in Samsung NP700G7A-S01PL notebook reports 6bpc */
>  	{ "SEC", 0xd033, EDID_QUIRK_FORCE_8BPC },
>  
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel
Mario Kleiner May 15, 2017, 4:49 p.m. UTC | #2
On 05/09/2017 09:50 AM, Jani Nikula wrote:
> On Mon, 08 May 2017, Tomasz Papież <tmszpp@gmail.com> wrote:
>> Since the introduction of kernel 4.8 I've been experiencing color
>> banding on my Lenovo G50-80 notebook. I also had reports of the same
>> symptoms on the G50-70 model.
>>
>> I figured out that the problem had been introduced by commit
>> 210a021dab639694600450c14b877bf3e3240adc
>
> commit 210a021dab639694600450c14b877bf3e3240adc
> Author: Mario Kleiner <mario.kleiner.de@gmail.com>
> Date:   Wed Jul 6 12:05:48 2016 +0200
>
>     drm/edid: Set 8 bpc color depth for displays with "DFP 1.x compliant TMDS".
>
> Cc: Mario.
>
>
>>
>> The G50-80's LCD panel supports 6bpc, but is now set to 8bpc,
>> and the system probably falls back to 6bpc
>> without any dithering, which result in heavily banded gradients.
>>
>> I fixed it for myself by adding an EDID quirk for that particular LCD
>> panel (see the attached patch). It's unknown to me, however, if there
>> are any other panels affected by the issue, so maybe a more general
>> solution might be desirable.
>> diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c
>> index fad3d44e4642..ee3124bcae87 100644
>> --- a/drivers/gpu/drm/drm_edid.c
>> +++ b/drivers/gpu/drm/drm_edid.c
>> @@ -147,6 +147,9 @@ static const struct edid_quirk {
>>  	/* Medion MD 30217 PG */
>>  	{ "MED", 0x7b8, EDID_QUIRK_PREFER_LARGE_75 },
>>
>> +	/* Fix for Lenovo G50 */
>> +	{ "SDC", 18514, EDID_QUIRK_FORCE_6BPC },
>> +
>>  	/* Panel in Samsung NP700G7A-S01PL notebook reports 6bpc */
>>  	{ "SEC", 0xd033, EDID_QUIRK_FORCE_8BPC },

This patch is

Reviewed-by: Mario Kleiner <mario.kleiner.de@gmail.com>

once it has a proper sign-off and commit message.

Given that the current code handles panels with non-faulty EDID 
properly, minus such quirks, i think it would make sense to add 
connector properties to intel-kms, so users can en/disable dithering or 
select dither depth manually via xrandr if the panel reports bogus stuff 
via EDID. nouveau and radeon/amdgpu do this, NVidia blob does it, also 
on Windows.

thanks,
-mario

>>
>> _______________________________________________
>> dri-devel mailing list
>> dri-devel@lists.freedesktop.org
>> https://lists.freedesktop.org/mailman/listinfo/dri-devel
>
diff mbox

Patch

diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c
index fad3d44e4642..ee3124bcae87 100644
--- a/drivers/gpu/drm/drm_edid.c
+++ b/drivers/gpu/drm/drm_edid.c
@@ -147,6 +147,9 @@  static const struct edid_quirk {
 	/* Medion MD 30217 PG */
 	{ "MED", 0x7b8, EDID_QUIRK_PREFER_LARGE_75 },
 
+	/* Fix for Lenovo G50 */
+	{ "SDC", 18514, EDID_QUIRK_FORCE_6BPC },
+
 	/* Panel in Samsung NP700G7A-S01PL notebook reports 6bpc */
 	{ "SEC", 0xd033, EDID_QUIRK_FORCE_8BPC },