drm/amd/display: force use sRGB for video TF is sRGB or BT709
authorJing Zhou <Jing.Zhou@amd.com>
Wed, 28 Oct 2020 07:50:53 +0000 (15:50 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Tue, 10 Nov 2020 19:25:27 +0000 (14:25 -0500)
[Why]
When mpo enabled, video comes is 709. Desktop use sRGB.
So color change easily noticeable especially when switch between
mpo/non-mpo.

[How]
Force use sRGB for video TF is sRGB or BT709.
DCN1/DCN2 use predefined type with YUV.
DCN3 use distributed points type with YUV.

Signed-off-by: Jing Zhou <Jing.Zhou@amd.com>
Acked-by: Bindu Ramamurthy <bindu.r@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/display/dc/dc.h
drivers/gpu/drm/amd/display/dc/dcn10/dcn10_resource.c
drivers/gpu/drm/amd/display/dc/dcn20/dcn20_resource.c
drivers/gpu/drm/amd/display/dc/dcn21/dcn21_resource.c
drivers/gpu/drm/amd/display/dc/dcn30/dcn30_resource.c
drivers/gpu/drm/amd/display/dc/dcn301/dcn301_resource.c
drivers/gpu/drm/amd/display/dc/dcn302/dcn302_resource.c

index 65aabf2..27bcbe5 100644 (file)
@@ -125,6 +125,7 @@ struct dpp_color_caps {
        uint16_t hw_3d_lut : 1;
        uint16_t ogam_ram : 1; // blnd gam
        uint16_t ocsc : 1;
+       uint16_t dgam_rom_for_yuv : 1;
        struct rom_curve_caps dgam_rom_caps;
        struct rom_curve_caps ogam_rom_caps;
 };
index e74bb27..bdc3783 100644 (file)
@@ -1439,6 +1439,7 @@ static bool dcn10_resource_construct(
        dc->caps.color.dpp.dgam_rom_caps.hlg = 0;
        dc->caps.color.dpp.post_csc = 0;
        dc->caps.color.dpp.gamma_corr = 0;
+       dc->caps.color.dpp.dgam_rom_for_yuv = 1;
 
        dc->caps.color.dpp.hw_3d_lut = 0;
        dc->caps.color.dpp.ogam_ram = 1; // RGAM on DCN1
index 728212c..ff36db5 100644 (file)
@@ -3820,6 +3820,7 @@ static bool dcn20_resource_construct(
        dc->caps.color.dpp.dgam_rom_caps.hlg = 0;
        dc->caps.color.dpp.post_csc = 0;
        dc->caps.color.dpp.gamma_corr = 0;
+       dc->caps.color.dpp.dgam_rom_for_yuv = 1;
 
        dc->caps.color.dpp.hw_3d_lut = 1;
        dc->caps.color.dpp.ogam_ram = 1;
index 5eedc19..abc8af0 100644 (file)
@@ -1978,6 +1978,7 @@ static bool dcn21_resource_construct(
        dc->caps.color.dpp.dgam_rom_caps.hlg = 0;
        dc->caps.color.dpp.post_csc = 0;
        dc->caps.color.dpp.gamma_corr = 0;
+       dc->caps.color.dpp.dgam_rom_for_yuv = 1;
 
        dc->caps.color.dpp.hw_3d_lut = 1;
        dc->caps.color.dpp.ogam_ram = 1;
index c885185..b379057 100644 (file)
@@ -2681,6 +2681,7 @@ static bool dcn30_resource_construct(
        dc->caps.color.dpp.dgam_rom_caps.hlg = 1;
        dc->caps.color.dpp.post_csc = 1;
        dc->caps.color.dpp.gamma_corr = 1;
+       dc->caps.color.dpp.dgam_rom_for_yuv = 0;
 
        dc->caps.color.dpp.hw_3d_lut = 1;
        dc->caps.color.dpp.ogam_ram = 1;
index 5a47b41..8824dbc 100644 (file)
@@ -1748,6 +1748,7 @@ static bool dcn301_resource_construct(
        dc->caps.color.dpp.dgam_rom_caps.hlg = 1;
        dc->caps.color.dpp.post_csc = 1;
        dc->caps.color.dpp.gamma_corr = 1;
+       dc->caps.color.dpp.dgam_rom_for_yuv = 0;
 
        dc->caps.color.dpp.hw_3d_lut = 1;
        dc->caps.color.dpp.ogam_ram = 1;
index e2e792d..765002e 100644 (file)
@@ -1327,6 +1327,7 @@ static bool dcn302_resource_construct(
        dc->caps.color.dpp.dgam_rom_caps.hlg = 1;
        dc->caps.color.dpp.post_csc = 1;
        dc->caps.color.dpp.gamma_corr = 1;
+       dc->caps.color.dpp.dgam_rom_for_yuv = 0;
 
        dc->caps.color.dpp.hw_3d_lut = 1;
        dc->caps.color.dpp.ogam_ram = 1;