drm/amd/display: Check that hw cursor is not required when falling back to subvp...
authorPeterson <peterson.guo@amd.com>
Thu, 21 Nov 2024 20:21:23 +0000 (15:21 -0500)
committerAlex Deucher <alexander.deucher@amd.com>
Tue, 10 Dec 2024 15:26:49 +0000 (10:26 -0500)
[WHY]
When using a sw cursor and flip immediate, the plane that is flipping
immediately will do partial updates causing tearing.
When on certain displays, subvp is expected based on
timings but should be disabled in specific use cases that are not
accounted for.

[HOW]
This was fixed by improving the timings check by using the hw cursor
required flag to cover the unaccounted use cases.

Reviewed-by: Austin Zheng <austin.zheng@amd.com>
Signed-off-by: Peterson <peterson.guo@amd.com>
Signed-off-by: Fangzhi Zuo <jerry.zuo@amd.com>
Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/display/dc/core/dc.c

index 49fe7dcf9372e49d3ac32fe74d618fd6617e8cee..dc14c0d05e8f98709732e898abed3aa79d026353 100644 (file)
@@ -6056,7 +6056,7 @@ void dc_query_current_properties(struct dc *dc, struct dc_current_properties *pr
        bool subvp_sw_cursor_req = false;
 
        for (i = 0; i < dc->current_state->stream_count; i++) {
-               if (check_subvp_sw_cursor_fallback_req(dc, dc->current_state->streams[i])) {
+               if (check_subvp_sw_cursor_fallback_req(dc, dc->current_state->streams[i]) && !dc->current_state->streams[i]->hw_cursor_req) {
                        subvp_sw_cursor_req = true;
                        break;
                }