Commit 6cffc78e authored by Austin Zheng's avatar Austin Zheng Committed by Alex Deucher

drm/amd/display: Set Stream Update Flags in commit_state_no_check

[Why]
Front-end would be programmed using the stream update flags set
from the previous update and the full update should be triggered
whenever commit_state_no_check gets called.

[How]
Set all stream update flags before programming the front-end
Clear all flags that got set to avoid redundant programming
Reviewed-by: default avatarAlvin Lee <alvin.lee2@amd.com>
Acked-by: default avatarTom Chung <chiahsuan.chung@amd.com>
Signed-off-by: default avatarAustin Zheng <austin.zheng@amd.com>
Tested-by: default avatarDaniel Wheeler <daniel.wheeler@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent d4327055
...@@ -1925,6 +1925,14 @@ static enum dc_status dc_commit_state_no_check(struct dc *dc, struct dc_state *c ...@@ -1925,6 +1925,14 @@ static enum dc_status dc_commit_state_no_check(struct dc *dc, struct dc_state *c
dc_trigger_sync(dc, context); dc_trigger_sync(dc, context);
/* Full update should unconditionally be triggered when dc_commit_state_no_check is called */
for (i = 0; i < context->stream_count; i++) {
uint32_t prev_dsc_changed = context->streams[i]->update_flags.bits.dsc_changed;
context->streams[i]->update_flags.raw = 0xFFFFFFFF;
context->streams[i]->update_flags.bits.dsc_changed = prev_dsc_changed;
}
/* Program all planes within new context*/ /* Program all planes within new context*/
if (dc->hwss.program_front_end_for_ctx) { if (dc->hwss.program_front_end_for_ctx) {
dc->hwss.interdependent_update_lock(dc, context, true); dc->hwss.interdependent_update_lock(dc, context, true);
...@@ -2003,6 +2011,11 @@ static enum dc_status dc_commit_state_no_check(struct dc *dc, struct dc_state *c ...@@ -2003,6 +2011,11 @@ static enum dc_status dc_commit_state_no_check(struct dc *dc, struct dc_state *c
for (i = 0; i < context->stream_count; i++) for (i = 0; i < context->stream_count; i++)
context->streams[i]->mode_changed = false; context->streams[i]->mode_changed = false;
/* Clear update flags that were set earlier to avoid redundant programming */
for (i = 0; i < context->stream_count; i++) {
context->streams[i]->update_flags.raw = 0x0;
}
old_state = dc->current_state; old_state = dc->current_state;
dc->current_state = context; dc->current_state = context;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment