Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

drm/amd/display: Reset pipe mask at beginning of cursor offload

[Why]
Double cursor when switching between hardware and software cursor when
dragging an MPO window can occur with cursor offload enabled.

The abort cursor update in the full programming path is responsible for
this issue since it does not reset the pipe mask when attempting to
submit an empty update.

The firmware programs the payload as requested which may contain
invalid or stale data for the previously enabled pipes, resulting in
an offset or double cursor.

[How]
For performance we don't want to memset the entire payload structure
due to its size, so just reset the pipe mask which will indicate the
payload data is empty.

Reviewed-by: Dillon Varone <dillon.varone@amd.com>
Signed-off-by: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>
Signed-off-by: Roman Li <roman.li@amd.com>
Tested-by: Dan Wheeler <daniel.wheeler@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>

authored by

Nicholas Kazlauskas and committed by
Alex Deucher
0e7f7b3a ae20768e

+1
+1
drivers/gpu/drm/amd/display/dc/hwss/dcn35/dcn35_hwseq.c
··· 1631 1631 payload_idx = write_idx % ARRAY_SIZE(cs->offload_streams[stream_idx].payloads); 1632 1632 1633 1633 cs->offload_streams[stream_idx].payloads[payload_idx].write_idx_start = write_idx; 1634 + cs->offload_streams[stream_idx].payloads[payload_idx].pipe_mask = 0; 1634 1635 1635 1636 if (pipe->plane_res.hubp) 1636 1637 pipe->plane_res.hubp->cursor_offload = true;