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 49fe7dc..dc14c0d 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;
                }