diff options
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3100-drm-amd-display-Pass-full-3x4-remap-matrix-for-color.patch')
-rw-r--r-- | meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3100-drm-amd-display-Pass-full-3x4-remap-matrix-for-color.patch | 300 |
1 files changed, 300 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3100-drm-amd-display-Pass-full-3x4-remap-matrix-for-color.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3100-drm-amd-display-Pass-full-3x4-remap-matrix-for-color.patch new file mode 100644 index 00000000..8922afde --- /dev/null +++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3100-drm-amd-display-Pass-full-3x4-remap-matrix-for-color.patch @@ -0,0 +1,300 @@ +From 93edd53a7f60e9a40ea0417ab5d43b91be0ee998 Mon Sep 17 00:00:00 2001 +From: Krunoslav Kovac <Krunoslav.Kovac@amd.com> +Date: Fri, 15 Dec 2017 17:58:45 -0500 +Subject: [PATCH 3100/4131] drm/amd/display: Pass full 3x4 remap matrix for + color transform + +Signed-off-by: Krunoslav Kovac <Krunoslav.Kovac@amd.com> +Reviewed-by: Aric Cyr <Aric.Cyr@amd.com> +Acked-by: Harry Wentland <harry.wentland@amd.com> +--- + drivers/gpu/drm/amd/display/dc/dc_hw_types.h | 6 +- + drivers/gpu/drm/amd/display/dc/dce/dce_transform.c | 17 +--- + .../amd/display/dc/dce110/dce110_hw_sequencer.c | 94 +++------------------- + .../gpu/drm/amd/display/dc/dcn10/dcn10_dpp_cm.c | 17 +--- + .../drm/amd/display/dc/dcn10/dcn10_hw_sequencer.c | 31 +------ + drivers/gpu/drm/amd/display/dc/inc/hw/transform.h | 2 +- + 6 files changed, 28 insertions(+), 139 deletions(-) + +diff --git a/drivers/gpu/drm/amd/display/dc/dc_hw_types.h b/drivers/gpu/drm/amd/display/dc/dc_hw_types.h +index 03029f7..1110408 100644 +--- a/drivers/gpu/drm/amd/display/dc/dc_hw_types.h ++++ b/drivers/gpu/drm/amd/display/dc/dc_hw_types.h +@@ -413,12 +413,14 @@ struct dc_cursor_mi_param { + enum { + GAMMA_RGB_256_ENTRIES = 256, + GAMMA_RGB_FLOAT_1024_ENTRIES = 1024, +- GAMMA_MAX_ENTRIES = 1024 ++ GAMMA_CS_TFM_1D_ENTRIES = 4096, ++ GAMMA_MAX_ENTRIES = 4096 + }; + + enum dc_gamma_type { + GAMMA_RGB_256 = 1, +- GAMMA_RGB_FLOAT_1024 = 2 ++ GAMMA_RGB_FLOAT_1024 = 2, ++ GAMMA_CS_TFM_1D = 3, + }; + + struct dc_gamma { +diff --git a/drivers/gpu/drm/amd/display/dc/dce/dce_transform.c b/drivers/gpu/drm/amd/display/dc/dce/dce_transform.c +index 0f662e6..2e5524f 100644 +--- a/drivers/gpu/drm/amd/display/dc/dce/dce_transform.c ++++ b/drivers/gpu/drm/amd/display/dc/dce/dce_transform.c +@@ -879,6 +879,7 @@ static void dce_transform_set_gamut_remap( + const struct xfm_grph_csc_adjustment *adjust) + { + struct dce_transform *xfm_dce = TO_DCE_TRANSFORM(xfm); ++ int i = 0; + + if (adjust->gamut_adjust_type != GRAPHICS_GAMUT_ADJUST_TYPE_SW) + /* Bypass if type is bypass or hw */ +@@ -887,20 +888,8 @@ static void dce_transform_set_gamut_remap( + struct fixed31_32 arr_matrix[GAMUT_MATRIX_SIZE]; + uint16_t arr_reg_val[GAMUT_MATRIX_SIZE]; + +- arr_matrix[0] = adjust->temperature_matrix[0]; +- arr_matrix[1] = adjust->temperature_matrix[1]; +- arr_matrix[2] = adjust->temperature_matrix[2]; +- arr_matrix[3] = dal_fixed31_32_zero; +- +- arr_matrix[4] = adjust->temperature_matrix[3]; +- arr_matrix[5] = adjust->temperature_matrix[4]; +- arr_matrix[6] = adjust->temperature_matrix[5]; +- arr_matrix[7] = dal_fixed31_32_zero; +- +- arr_matrix[8] = adjust->temperature_matrix[6]; +- arr_matrix[9] = adjust->temperature_matrix[7]; +- arr_matrix[10] = adjust->temperature_matrix[8]; +- arr_matrix[11] = dal_fixed31_32_zero; ++ for (i = 0; i < GAMUT_MATRIX_SIZE; i++) ++ arr_matrix[i] = adjust->temperature_matrix[i]; + + convert_float_matrix( + arr_reg_val, arr_matrix, GAMUT_MATRIX_SIZE); +diff --git a/drivers/gpu/drm/amd/display/dc/dce110/dce110_hw_sequencer.c b/drivers/gpu/drm/amd/display/dc/dce110/dce110_hw_sequencer.c +index 1a28938..d046212 100644 +--- a/drivers/gpu/drm/amd/display/dc/dce110/dce110_hw_sequencer.c ++++ b/drivers/gpu/drm/amd/display/dc/dce110/dce110_hw_sequencer.c +@@ -2121,6 +2121,7 @@ static void program_surface_visibility(const struct dc *dc, + + static void program_gamut_remap(struct pipe_ctx *pipe_ctx) + { ++ int i = 0; + struct xfm_grph_csc_adjustment adjust; + memset(&adjust, 0, sizeof(adjust)); + adjust.gamut_adjust_type = GRAPHICS_GAMUT_ADJUST_TYPE_BYPASS; +@@ -2128,33 +2129,10 @@ static void program_gamut_remap(struct pipe_ctx *pipe_ctx) + + if (pipe_ctx->stream->gamut_remap_matrix.enable_remap == true) { + adjust.gamut_adjust_type = GRAPHICS_GAMUT_ADJUST_TYPE_SW; +- adjust.temperature_matrix[0] = +- pipe_ctx->stream-> +- gamut_remap_matrix.matrix[0]; +- adjust.temperature_matrix[1] = +- pipe_ctx->stream-> +- gamut_remap_matrix.matrix[1]; +- adjust.temperature_matrix[2] = +- pipe_ctx->stream-> +- gamut_remap_matrix.matrix[2]; +- adjust.temperature_matrix[3] = +- pipe_ctx->stream-> +- gamut_remap_matrix.matrix[4]; +- adjust.temperature_matrix[4] = +- pipe_ctx->stream-> +- gamut_remap_matrix.matrix[5]; +- adjust.temperature_matrix[5] = +- pipe_ctx->stream-> +- gamut_remap_matrix.matrix[6]; +- adjust.temperature_matrix[6] = +- pipe_ctx->stream-> +- gamut_remap_matrix.matrix[8]; +- adjust.temperature_matrix[7] = +- pipe_ctx->stream-> +- gamut_remap_matrix.matrix[9]; +- adjust.temperature_matrix[8] = +- pipe_ctx->stream-> +- gamut_remap_matrix.matrix[10]; ++ ++ for (i = 0; i < CSC_TEMPERATURE_MATRIX_SIZE; i++) ++ adjust.temperature_matrix[i] = ++ pipe_ctx->stream->gamut_remap_matrix.matrix[i]; + } + + pipe_ctx->plane_res.xfm->funcs->transform_set_gamut_remap(pipe_ctx->plane_res.xfm, &adjust); +@@ -2195,33 +2173,10 @@ static void set_plane_config( + + if (pipe_ctx->stream->gamut_remap_matrix.enable_remap == true) { + adjust.gamut_adjust_type = GRAPHICS_GAMUT_ADJUST_TYPE_SW; +- adjust.temperature_matrix[0] = +- pipe_ctx->stream-> +- gamut_remap_matrix.matrix[0]; +- adjust.temperature_matrix[1] = +- pipe_ctx->stream-> +- gamut_remap_matrix.matrix[1]; +- adjust.temperature_matrix[2] = +- pipe_ctx->stream-> +- gamut_remap_matrix.matrix[2]; +- adjust.temperature_matrix[3] = +- pipe_ctx->stream-> +- gamut_remap_matrix.matrix[4]; +- adjust.temperature_matrix[4] = +- pipe_ctx->stream-> +- gamut_remap_matrix.matrix[5]; +- adjust.temperature_matrix[5] = +- pipe_ctx->stream-> +- gamut_remap_matrix.matrix[6]; +- adjust.temperature_matrix[6] = +- pipe_ctx->stream-> +- gamut_remap_matrix.matrix[8]; +- adjust.temperature_matrix[7] = +- pipe_ctx->stream-> +- gamut_remap_matrix.matrix[9]; +- adjust.temperature_matrix[8] = +- pipe_ctx->stream-> +- gamut_remap_matrix.matrix[10]; ++ ++ for (i = 0; i < CSC_TEMPERATURE_MATRIX_SIZE; i++) ++ adjust.temperature_matrix[i] = ++ pipe_ctx->stream->gamut_remap_matrix.matrix[i]; + } + + pipe_ctx->plane_res.xfm->funcs->transform_set_gamut_remap(pipe_ctx->plane_res.xfm, &adjust); +@@ -2689,33 +2644,10 @@ static void dce110_program_front_end_for_pipe( + + if (pipe_ctx->stream->gamut_remap_matrix.enable_remap == true) { + adjust.gamut_adjust_type = GRAPHICS_GAMUT_ADJUST_TYPE_SW; +- adjust.temperature_matrix[0] = +- pipe_ctx->stream-> +- gamut_remap_matrix.matrix[0]; +- adjust.temperature_matrix[1] = +- pipe_ctx->stream-> +- gamut_remap_matrix.matrix[1]; +- adjust.temperature_matrix[2] = +- pipe_ctx->stream-> +- gamut_remap_matrix.matrix[2]; +- adjust.temperature_matrix[3] = +- pipe_ctx->stream-> +- gamut_remap_matrix.matrix[4]; +- adjust.temperature_matrix[4] = +- pipe_ctx->stream-> +- gamut_remap_matrix.matrix[5]; +- adjust.temperature_matrix[5] = +- pipe_ctx->stream-> +- gamut_remap_matrix.matrix[6]; +- adjust.temperature_matrix[6] = +- pipe_ctx->stream-> +- gamut_remap_matrix.matrix[8]; +- adjust.temperature_matrix[7] = +- pipe_ctx->stream-> +- gamut_remap_matrix.matrix[9]; +- adjust.temperature_matrix[8] = +- pipe_ctx->stream-> +- gamut_remap_matrix.matrix[10]; ++ ++ for (i = 0; i < CSC_TEMPERATURE_MATRIX_SIZE; i++) ++ adjust.temperature_matrix[i] = ++ pipe_ctx->stream->gamut_remap_matrix.matrix[i]; + } + + pipe_ctx->plane_res.xfm->funcs->transform_set_gamut_remap(pipe_ctx->plane_res.xfm, &adjust); +diff --git a/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_dpp_cm.c b/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_dpp_cm.c +index a5b0990..2482390 100644 +--- a/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_dpp_cm.c ++++ b/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_dpp_cm.c +@@ -193,6 +193,7 @@ void dpp1_cm_set_gamut_remap( + const struct dpp_grph_csc_adjustment *adjust) + { + struct dcn10_dpp *dpp = TO_DCN10_DPP(dpp_base); ++ int i = 0; + + if (adjust->gamut_adjust_type != GRAPHICS_GAMUT_ADJUST_TYPE_SW) + /* Bypass if type is bypass or hw */ +@@ -201,20 +202,8 @@ void dpp1_cm_set_gamut_remap( + struct fixed31_32 arr_matrix[12]; + uint16_t arr_reg_val[12]; + +- arr_matrix[0] = adjust->temperature_matrix[0]; +- arr_matrix[1] = adjust->temperature_matrix[1]; +- arr_matrix[2] = adjust->temperature_matrix[2]; +- arr_matrix[3] = dal_fixed31_32_zero; +- +- arr_matrix[4] = adjust->temperature_matrix[3]; +- arr_matrix[5] = adjust->temperature_matrix[4]; +- arr_matrix[6] = adjust->temperature_matrix[5]; +- arr_matrix[7] = dal_fixed31_32_zero; +- +- arr_matrix[8] = adjust->temperature_matrix[6]; +- arr_matrix[9] = adjust->temperature_matrix[7]; +- arr_matrix[10] = adjust->temperature_matrix[8]; +- arr_matrix[11] = dal_fixed31_32_zero; ++ for (i = 0; i < 12; i++) ++ arr_matrix[i] = adjust->temperature_matrix[i]; + + convert_float_matrix( + arr_reg_val, arr_matrix, 12); +diff --git a/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_hw_sequencer.c b/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_hw_sequencer.c +index 0f5a22e..77c4376 100644 +--- a/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_hw_sequencer.c ++++ b/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_hw_sequencer.c +@@ -1380,6 +1380,7 @@ static void dcn10_enable_plane( + + static void program_gamut_remap(struct pipe_ctx *pipe_ctx) + { ++ int i = 0; + struct dpp_grph_csc_adjustment adjust; + memset(&adjust, 0, sizeof(adjust)); + adjust.gamut_adjust_type = GRAPHICS_GAMUT_ADJUST_TYPE_BYPASS; +@@ -1387,33 +1388,9 @@ static void program_gamut_remap(struct pipe_ctx *pipe_ctx) + + if (pipe_ctx->stream->gamut_remap_matrix.enable_remap == true) { + adjust.gamut_adjust_type = GRAPHICS_GAMUT_ADJUST_TYPE_SW; +- adjust.temperature_matrix[0] = +- pipe_ctx->stream-> +- gamut_remap_matrix.matrix[0]; +- adjust.temperature_matrix[1] = +- pipe_ctx->stream-> +- gamut_remap_matrix.matrix[1]; +- adjust.temperature_matrix[2] = +- pipe_ctx->stream-> +- gamut_remap_matrix.matrix[2]; +- adjust.temperature_matrix[3] = +- pipe_ctx->stream-> +- gamut_remap_matrix.matrix[4]; +- adjust.temperature_matrix[4] = +- pipe_ctx->stream-> +- gamut_remap_matrix.matrix[5]; +- adjust.temperature_matrix[5] = +- pipe_ctx->stream-> +- gamut_remap_matrix.matrix[6]; +- adjust.temperature_matrix[6] = +- pipe_ctx->stream-> +- gamut_remap_matrix.matrix[8]; +- adjust.temperature_matrix[7] = +- pipe_ctx->stream-> +- gamut_remap_matrix.matrix[9]; +- adjust.temperature_matrix[8] = +- pipe_ctx->stream-> +- gamut_remap_matrix.matrix[10]; ++ for (i = 0; i < CSC_TEMPERATURE_MATRIX_SIZE; i++) ++ adjust.temperature_matrix[i] = ++ pipe_ctx->stream->gamut_remap_matrix.matrix[i]; + } + + pipe_ctx->plane_res.dpp->funcs->dpp_set_gamut_remap(pipe_ctx->plane_res.dpp, &adjust); +diff --git a/drivers/gpu/drm/amd/display/dc/inc/hw/transform.h b/drivers/gpu/drm/amd/display/dc/inc/hw/transform.h +index 6f6c02b..c5b3623 100644 +--- a/drivers/gpu/drm/amd/display/dc/inc/hw/transform.h ++++ b/drivers/gpu/drm/amd/display/dc/inc/hw/transform.h +@@ -30,7 +30,7 @@ + #include "dc_hw_types.h" + #include "fixed31_32.h" + +-#define CSC_TEMPERATURE_MATRIX_SIZE 9 ++#define CSC_TEMPERATURE_MATRIX_SIZE 12 + + struct bit_depth_reduction_params; + +-- +2.7.4 + |