drm/amd/display: Added timing sync trace.
Signed-off-by: Yongqiang Sun <yongqiang.sun@amd.com> Reviewed-by: Tony Cheng <Tony.Cheng@amd.com> Acked-by: Harry Wentland <Harry.Wentland@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
parent
5ea81b9185
commit
9474980ac4
@ -1488,8 +1488,10 @@ void dc_update_surfaces_for_target(struct dc *dc, struct dc_surface_update *upda
|
|||||||
core_dc->hwss.prepare_pipe_for_context(
|
core_dc->hwss.prepare_pipe_for_context(
|
||||||
core_dc, pipe_ctx, context);
|
core_dc, pipe_ctx, context);
|
||||||
}
|
}
|
||||||
if (apply_ctx)
|
if (apply_ctx) {
|
||||||
core_dc->hwss.apply_ctx_for_surface(core_dc, surface, context);
|
core_dc->hwss.apply_ctx_for_surface(core_dc, surface, context);
|
||||||
|
context_timing_trace(dc, &context->res_ctx);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = context->res_ctx.pool->pipe_count - 1; i >= 0; i--) {
|
for (i = context->res_ctx.pool->pipe_count - 1; i >= 0; i--) {
|
||||||
|
@ -22,6 +22,13 @@
|
|||||||
##__VA_ARGS__); \
|
##__VA_ARGS__); \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
|
#define TIMING_TRACE(...) do {\
|
||||||
|
if (dc->debug.timing_trace) \
|
||||||
|
dm_logger_write(logger, \
|
||||||
|
LOG_SYNC, \
|
||||||
|
##__VA_ARGS__); \
|
||||||
|
} while (0)
|
||||||
|
|
||||||
void pre_surface_trace(
|
void pre_surface_trace(
|
||||||
const struct dc *dc,
|
const struct dc *dc,
|
||||||
const struct dc_surface *const *surfaces,
|
const struct dc_surface *const *surfaces,
|
||||||
@ -268,3 +275,28 @@ void post_surface_trace(const struct dc *dc)
|
|||||||
SURFACE_TRACE("post surface process.\n");
|
SURFACE_TRACE("post surface process.\n");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void context_timing_trace(
|
||||||
|
const struct dc *dc,
|
||||||
|
struct resource_context *res_ctx)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
struct core_dc *core_dc = DC_TO_CORE(dc);
|
||||||
|
struct dal_logger *logger = core_dc->ctx->logger;
|
||||||
|
|
||||||
|
for (i = 0; i < core_dc->res_pool->pipe_count; i++) {
|
||||||
|
struct pipe_ctx *pipe_ctx = &res_ctx->pipe_ctx[i];
|
||||||
|
int h_pos = 0;
|
||||||
|
int v_pos = 0;
|
||||||
|
|
||||||
|
if (pipe_ctx->stream == NULL)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
pipe_ctx->tg->funcs->get_position(pipe_ctx->tg, &h_pos, &v_pos);
|
||||||
|
TIMING_TRACE("Pipe_%d H_tot:%d V_tot:%d H_pos:%d V_pos:%d\n",
|
||||||
|
pipe_ctx->pipe_idx,
|
||||||
|
pipe_ctx->stream->public.timing.h_total,
|
||||||
|
pipe_ctx->stream->public.timing.v_total,
|
||||||
|
h_pos, v_pos);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -140,6 +140,7 @@ struct dc_debug {
|
|||||||
bool max_disp_clk;
|
bool max_disp_clk;
|
||||||
bool target_trace;
|
bool target_trace;
|
||||||
bool surface_trace;
|
bool surface_trace;
|
||||||
|
bool timing_trace;
|
||||||
bool validation_trace;
|
bool validation_trace;
|
||||||
bool disable_stutter;
|
bool disable_stutter;
|
||||||
bool disable_dcc;
|
bool disable_dcc;
|
||||||
|
@ -1892,7 +1892,6 @@ static void dce110_apply_ctx_for_surface(
|
|||||||
program_blender(dc, pipe_ctx);
|
program_blender(dc, pipe_ctx);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void dce110_power_down_fe(struct core_dc *dc, struct pipe_ctx *pipe)
|
static void dce110_power_down_fe(struct core_dc *dc, struct pipe_ctx *pipe)
|
||||||
|
@ -31,6 +31,7 @@
|
|||||||
struct dc_context;
|
struct dc_context;
|
||||||
struct dc_link;
|
struct dc_link;
|
||||||
struct dc_surface_update;
|
struct dc_surface_update;
|
||||||
|
struct resource_context;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
*
|
*
|
||||||
@ -85,6 +86,10 @@ void update_surface_trace(
|
|||||||
|
|
||||||
void post_surface_trace(const struct dc *dc);
|
void post_surface_trace(const struct dc *dc);
|
||||||
|
|
||||||
|
void context_timing_trace(
|
||||||
|
const struct dc *dc,
|
||||||
|
struct resource_context *res_ctx);
|
||||||
|
|
||||||
|
|
||||||
/* Any function which is empty or have incomplete implementation should be
|
/* Any function which is empty or have incomplete implementation should be
|
||||||
* marked by this macro.
|
* marked by this macro.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user