drm/amd/display: disable FBC on underlay pipe
authorShirish S <shirish.s@amd.com>
Wed, 25 Apr 2018 09:12:28 +0000 (14:42 +0530)
committerAlex Deucher <alexander.deucher@amd.com>
Tue, 15 May 2018 18:44:17 +0000 (13:44 -0500)
FBC is not applicable for the underlay pipe,
hence disallow enabling and disabling of the same.

This also fixes the BUG hit of calling sleep in
atomic context.

Signed-off-by: Shirish S <shirish.s@amd.com>
Reviewed-by: Roman Li <Roman.Li@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/display/dc/dce110/dce110_hw_sequencer.c

index 51c6c70..2288d0a 100644 (file)
@@ -2747,6 +2747,9 @@ static void dce110_program_front_end_for_pipe(
        struct dc_plane_state *plane_state = pipe_ctx->plane_state;
        struct xfm_grph_csc_adjustment adjust;
        struct out_csc_color_matrix tbl_entry;
+#if defined(CONFIG_DRM_AMD_DC_FBC)
+       unsigned int underlay_idx = dc->res_pool->underlay_pipe_index;
+#endif
        unsigned int i;
        DC_LOGGER_INIT();
        memset(&tbl_entry, 0, sizeof(tbl_entry));
@@ -2788,7 +2791,9 @@ static void dce110_program_front_end_for_pipe(
        program_scaler(dc, pipe_ctx);
 
 #if defined(CONFIG_DRM_AMD_DC_FBC)
-       if (dc->fbc_compressor && old_pipe->stream) {
+       /* fbc not applicable on Underlay pipe */
+       if (dc->fbc_compressor && old_pipe->stream &&
+           pipe_ctx->pipe_idx != underlay_idx) {
                if (plane_state->tiling_info.gfx8.array_mode == DC_ARRAY_LINEAR_GENERAL)
                        dc->fbc_compressor->funcs->disable_fbc(dc->fbc_compressor);
                else