From: Austin Zheng <austin.zh...@amd.com>

[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: Alvin Lee <alvin.l...@amd.com>
Acked-by: Tom Chung <chiahsuan.ch...@amd.com>
Signed-off-by: Austin Zheng <austin.zh...@amd.com>
---
 drivers/gpu/drm/amd/display/dc/core/dc.c | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/drivers/gpu/drm/amd/display/dc/core/dc.c 
b/drivers/gpu/drm/amd/display/dc/core/dc.c
index dfd31b169412..4326daa21094 100644
--- a/drivers/gpu/drm/amd/display/dc/core/dc.c
+++ b/drivers/gpu/drm/amd/display/dc/core/dc.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);
 
+       /* 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*/
        if (dc->hwss.program_front_end_for_ctx) {
                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
        for (i = 0; i < context->stream_count; i++)
                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;
        dc->current_state = context;
 
-- 
2.25.1

Reply via email to