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> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -1435,6 +1435,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)
|
||||
@@ -1463,6 +1491,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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user