summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjsg <jsg@openbsd.org>2020-06-22 09:49:24 +0000
committerjsg <jsg@openbsd.org>2020-06-22 09:49:24 +0000
commit749fe90a3d265187283bffa6b562e41ed15f84ba (patch)
tree280200c5a852a5fa602aa42bfade9bddaf31b059
parentdrm/amdgpu: fix and cleanup amdgpu_gem_object_close v4 (diff)
downloadwireguard-openbsd-749fe90a3d265187283bffa6b562e41ed15f84ba.tar.xz
wireguard-openbsd-749fe90a3d265187283bffa6b562e41ed15f84ba.zip
drm/amd/display: Force watermark value propagation
From Joshua Aberback 3a16e9862faff68edb43c1ec3112d62f6a391037 in linux 5.7.y/5.7.5 868149c9a072cbdc22a73ce25a487f9fbfa171ef in mainline linux
-rw-r--r--sys/dev/pci/drm/amd/display/dc/dcn20/dcn20_hwseq.c5
-rw-r--r--sys/dev/pci/drm/amd/display/dc/inc/hw/dchubbub.h2
2 files changed, 6 insertions, 1 deletions
diff --git a/sys/dev/pci/drm/amd/display/dc/dcn20/dcn20_hwseq.c b/sys/dev/pci/drm/amd/display/dc/dcn20/dcn20_hwseq.c
index a023a4d59f4..c4fa13e4eaf 100644
--- a/sys/dev/pci/drm/amd/display/dc/dcn20/dcn20_hwseq.c
+++ b/sys/dev/pci/drm/amd/display/dc/dcn20/dcn20_hwseq.c
@@ -1478,8 +1478,11 @@ static void dcn20_program_pipe(
if (pipe_ctx->update_flags.bits.odm)
hws->funcs.update_odm(dc, context, pipe_ctx);
- if (pipe_ctx->update_flags.bits.enable)
+ if (pipe_ctx->update_flags.bits.enable) {
dcn20_enable_plane(dc, pipe_ctx, context);
+ if (dc->res_pool->hubbub->funcs->force_wm_propagate_to_pipes)
+ dc->res_pool->hubbub->funcs->force_wm_propagate_to_pipes(dc->res_pool->hubbub);
+ }
if (pipe_ctx->update_flags.raw || pipe_ctx->plane_state->update_flags.raw || pipe_ctx->stream->update_flags.raw)
dcn20_update_dchubp_dpp(dc, pipe_ctx, context);
diff --git a/sys/dev/pci/drm/amd/display/dc/inc/hw/dchubbub.h b/sys/dev/pci/drm/amd/display/dc/inc/hw/dchubbub.h
index f5dd0cc73c6..47a566d82d6 100644
--- a/sys/dev/pci/drm/amd/display/dc/inc/hw/dchubbub.h
+++ b/sys/dev/pci/drm/amd/display/dc/inc/hw/dchubbub.h
@@ -144,6 +144,8 @@ struct hubbub_funcs {
void (*allow_self_refresh_control)(struct hubbub *hubbub, bool allow);
void (*apply_DEDCN21_147_wa)(struct hubbub *hubbub);
+
+ void (*force_wm_propagate_to_pipes)(struct hubbub *hubbub);
};
struct hubbub {