diff options
| author | Ivan Lipski <ivan.lipski@amd.com> | 2026-09-10 15:44:20 -0400 |
|---|---|---|
| committer | Alex Deucher <alexander.deucher@amd.com> | 2026-09-23 14:18:16 -0400 |
| commit | c66847b01c5d8e8b2eb24b4370a277f557a74218 (patch) | |
| tree | 6bde3df2e2e74e3019faf2b3b85d64bede0b57da /tools/perf/scripts/python | |
| parent | ad1f4faa76d4aee438e89993403a8f6f67ed9431 (diff) | |
| download | linux-c66847b01c5d8e8b2eb24b4370a277f557a74218.tar.gz linux-c66847b01c5d8e8b2eb24b4370a277f557a74218.zip | |
drm/amd/display: Resync cursor cache after offload abort on DCN60
[Why&How]
The cursor programming path caches the last-written cursor state in SW
and, for the enable bit, skips the register write when the cache already
matches the request. Under cursor offload the SW cache is updated even
though the actual register write is deferred to firmware. When an
offloaded cursor update is aborted (e.g. an overlay geometry change
reprograms the cursor directly in the same frame), the queued firmware
write is dropped but the cache is left stale, so the following direct
programming pass skips the enable write and the cursor disappears over
the overlay plane.
Add a refresh_cursor_state() hubp/dpp hook that reads the cursor
position and attribute registers back from hardware into the SW cache,
and call it from dcn35_abort_cursor_offload_update() so the cache is
truthful after an abort. This keeps the enable-change optimization
intact for all ASICs and is race-robust regardless of whether firmware
applied the queued write before the abort. Only dcn60 (the sole offload
user) wires up the hook.
Assisted-by: Copilot:Claude-Opus-4.8
Reviewed-by: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>
Signed-off-by: Ivan Lipski <ivan.lipski@amd.com>
Signed-off-by: George Zhang <george.zhang@amd.com>
Tested-by: Dan Wheeler <daniel.wheeler@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'tools/perf/scripts/python')
0 files changed, 0 insertions, 0 deletions
