diff options
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3434-drm-amd-display-Add-Logging-for-Gamma-Related-inform.patch')
-rw-r--r-- | meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3434-drm-amd-display-Add-Logging-for-Gamma-Related-inform.patch | 114 |
1 files changed, 114 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3434-drm-amd-display-Add-Logging-for-Gamma-Related-inform.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3434-drm-amd-display-Add-Logging-for-Gamma-Related-inform.patch new file mode 100644 index 00000000..bd669d57 --- /dev/null +++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3434-drm-amd-display-Add-Logging-for-Gamma-Related-inform.patch @@ -0,0 +1,114 @@ +From 195fb6ba689935a22b42866a98afef7649d9925a Mon Sep 17 00:00:00 2001 +From: Wyatt Wood <wyatt.wood@amd.com> +Date: Wed, 24 Jul 2019 13:37:08 -0400 +Subject: [PATCH 3434/4256] drm/amd/display: Add Logging for Gamma Related + information (2/2) + +[Why] +A recent bug showed that logging would be useful in debugging +various gamma issues. + +[How] +Add logging in dc. + +Signed-off-by: Wyatt Wood <wyatt.wood@amd.com> +Reviewed-by: Krunoslav Kovac <Krunoslav.Kovac@amd.com> +Acked-by: Leo Li <sunpeng.li@amd.com> +--- + .../amd/display/dc/dcn10/dcn10_cm_common.c | 4 +-- + .../amd/display/dc/dcn10/dcn10_hw_sequencer.c | 32 +++++++++++++++++++ + .../drm/amd/display/include/logger_types.h | 6 ++++ + 3 files changed, 40 insertions(+), 2 deletions(-) + +diff --git a/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_cm_common.c b/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_cm_common.c +index 8166fdbacd73..01c7e30b9ce1 100644 +--- a/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_cm_common.c ++++ b/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_cm_common.c +@@ -343,8 +343,8 @@ bool cm_helper_translate_curve_to_hw_format( + region_start = -MAX_LOW_POINT; + region_end = NUMBER_REGIONS - MAX_LOW_POINT; + } else { +- /* 10 segments +- * segment is from 2^-10 to 2^0 ++ /* 11 segments ++ * segment is from 2^-10 to 2^1 + * There are less than 256 points, for optimization + */ + seg_distr[0] = 3; +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 ee553262039f..2846017a544d 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 +@@ -1433,6 +1433,34 @@ static bool dcn10_set_input_transfer_func(struct pipe_ctx *pipe_ctx, + return result; + } + ++#define MAX_NUM_HW_POINTS 0x200 ++ ++static void log_tf(struct dc_context *ctx, ++ struct dc_transfer_func *tf, uint32_t hw_points_num) ++{ ++ // DC_LOG_GAMMA is default logging of all hw points ++ // DC_LOG_ALL_GAMMA logs all points, not only hw points ++ // DC_LOG_ALL_TF_POINTS logs all channels of the tf ++ int i = 0; ++ ++ DC_LOGGER_INIT(ctx->logger); ++ DC_LOG_GAMMA("Gamma Correction TF"); ++ DC_LOG_ALL_GAMMA("Logging all tf points..."); ++ DC_LOG_ALL_TF_CHANNELS("Logging all channels..."); ++ ++ for (i = 0; i < hw_points_num; i++) { ++ DC_LOG_GAMMA("R %d %llu\n", i, tf->tf_pts.red[i].value); ++ DC_LOG_ALL_TF_CHANNELS("G %d, %llu\n", i, tf->tf_pts.green[i].value); ++ DC_LOG_ALL_TF_CHANNELS("B %d, %llu\n", i, tf->tf_pts.blue[i].value); ++ } ++ ++ for (i = hw_points_num; i < MAX_NUM_HW_POINTS; i++) { ++ DC_LOG_ALL_GAMMA("R %d %llu\n", i, tf->tf_pts.red[i].value); ++ DC_LOG_ALL_TF_CHANNELS("G %d %llu\n", i, tf->tf_pts.green[i].value); ++ DC_LOG_ALL_TF_CHANNELS("B %d %llu\n", i, tf->tf_pts.blue[i].value); ++ } ++} ++ + static bool + dcn10_set_output_transfer_func(struct pipe_ctx *pipe_ctx, + const struct dc_stream_state *stream) +@@ -1461,6 +1489,10 @@ dcn10_set_output_transfer_func(struct pipe_ctx *pipe_ctx, + } else + dpp->funcs->dpp_program_regamma_pwl(dpp, NULL, OPP_REGAMMA_BYPASS); + ++ log_tf(stream->ctx, ++ stream->out_transfer_func, ++ dpp->regamma_params.hw_points_num); ++ + return true; + } + +diff --git a/drivers/gpu/drm/amd/display/include/logger_types.h b/drivers/gpu/drm/amd/display/include/logger_types.h +index 81650ee40f0b..2b219cdb13ad 100644 +--- a/drivers/gpu/drm/amd/display/include/logger_types.h ++++ b/drivers/gpu/drm/amd/display/include/logger_types.h +@@ -63,6 +63,9 @@ + #define DC_LOG_IF_TRACE(...) pr_debug("[IF_TRACE]:"__VA_ARGS__) + #define DC_LOG_PERF_TRACE(...) DRM_DEBUG_KMS(__VA_ARGS__) + #define DC_LOG_RETIMER_REDRIVER(...) DRM_DEBUG_KMS(__VA_ARGS__) ++#define DC_LOG_GAMMA(...) pr_debug("[GAMMA]:"__VA_ARGS__) ++#define DC_LOG_ALL_GAMMA(...) pr_debug("[GAMMA]:"__VA_ARGS__) ++#define DC_LOG_ALL_TF_CHANNELS(...) pr_debug("[GAMMA]:"__VA_ARGS__) + #ifdef CONFIG_DRM_AMD_DC_DSC_SUPPORT + #define DC_LOG_DSC(...) DRM_DEBUG_KMS(__VA_ARGS__) + #endif +@@ -118,6 +121,9 @@ enum dc_log_type { + #endif + LOG_DWB, + LOG_GAMMA_DEBUG, ++ LOG_MAX_HW_POINTS, ++ LOG_ALL_TF_CHANNELS, ++ LOG_SAMPLE_1DLUT, + LOG_SECTION_TOTAL_COUNT + }; + +-- +2.17.1 + |