From: Yongqiang Sun <yongqiang....@amd.com>

Change-Id: I5dcb31efb2f894fbd5ac3c169fe1eda81fc585e0
Signed-off-by: Yongqiang Sun <yongqiang....@amd.com>
Reviewed-by: Tony Cheng <tony.ch...@amd.com>
Acked-by: Harry Wentland <harry.wentl...@amd.com>
---
 drivers/gpu/drm/amd/display/dc/core/dc.c           |  4 ++-
 drivers/gpu/drm/amd/display/dc/core/dc_debug.c     | 32 ++++++++++++++++++++++
 drivers/gpu/drm/amd/display/dc/dc.h                |  1 +
 .../amd/display/dc/dce110/dce110_hw_sequencer.c    |  1 -
 .../gpu/drm/amd/display/include/logger_interface.h |  5 ++++
 5 files changed, 41 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/amd/display/dc/core/dc.c 
b/drivers/gpu/drm/amd/display/dc/core/dc.c
index 8e1d695fcb77..de99d71f9042 100644
--- a/drivers/gpu/drm/amd/display/dc/core/dc.c
+++ b/drivers/gpu/drm/amd/display/dc/core/dc.c
@@ -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, pipe_ctx, context);
                }
-               if (apply_ctx)
+               if (apply_ctx) {
                        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--) {
diff --git a/drivers/gpu/drm/amd/display/dc/core/dc_debug.c 
b/drivers/gpu/drm/amd/display/dc/core/dc_debug.c
index 8ca0f1e0369a..78b8e0c5b4e7 100644
--- a/drivers/gpu/drm/amd/display/dc/core/dc_debug.c
+++ b/drivers/gpu/drm/amd/display/dc/core/dc_debug.c
@@ -22,6 +22,13 @@
                                        ##__VA_ARGS__); \
 } 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(
                const struct dc *dc,
                const struct dc_surface *const *surfaces,
@@ -268,3 +275,28 @@ void post_surface_trace(const struct dc *dc)
        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);
+       }
+}
diff --git a/drivers/gpu/drm/amd/display/dc/dc.h 
b/drivers/gpu/drm/amd/display/dc/dc.h
index 5f608009b794..454485b97852 100644
--- a/drivers/gpu/drm/amd/display/dc/dc.h
+++ b/drivers/gpu/drm/amd/display/dc/dc.h
@@ -140,6 +140,7 @@ struct dc_debug {
        bool max_disp_clk;
        bool target_trace;
        bool surface_trace;
+       bool timing_trace;
        bool validation_trace;
        bool disable_stutter;
        bool disable_dcc;
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 6ad23f327631..99937facf645 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
@@ -1892,7 +1892,6 @@ static void dce110_apply_ctx_for_surface(
                program_blender(dc, pipe_ctx);
 
        }
-
 }
 
 static void dce110_power_down_fe(struct core_dc *dc, struct pipe_ctx *pipe)
diff --git a/drivers/gpu/drm/amd/display/include/logger_interface.h 
b/drivers/gpu/drm/amd/display/include/logger_interface.h
index b58d30de8293..08a6911d3a3a 100644
--- a/drivers/gpu/drm/amd/display/include/logger_interface.h
+++ b/drivers/gpu/drm/amd/display/include/logger_interface.h
@@ -31,6 +31,7 @@
 struct dc_context;
 struct dc_link;
 struct dc_surface_update;
+struct resource_context;
 
 /*
  *
@@ -85,6 +86,10 @@ void update_surface_trace(
 
 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
  * marked by this macro.
-- 
2.9.3

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

Reply via email to