Skip to content
Commit 674e78ac authored by Nicholas Kazlauskas's avatar Nicholas Kazlauskas Committed by Alex Deucher
Browse files

drm/amd/display: Add fast path for cursor plane updates



[Why]
Legacy cursor plane updates from drm helpers go through the full
atomic codepath. A high volume of cursor updates through this slow
code path can cause subsequent page-flips to skip vblank intervals
since each individual update is slow.

This problem is particularly noticeable for the compton compositor.

[How]
A fast path for cursor plane updates is added by using DRM asynchronous
commit support provided by async_check and async_update. These don't do
a full state/flip_done dependency stall and they don't block other
commit work.

However, DC still expects itself to be single-threaded for anything
that can issue register writes. Screen corruption or hangs can occur
if write sequences overlap. Every call that potentially perform
register writes needs to be guarded for asynchronous updates to work.
The dc_lock mutex was added for this.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=106175

Signed-off-by: default avatarNicholas Kazlauskas <nicholas.kazlauskas@amd.com>
Acked-by: default avatarAndrey Grodzovsky <andrey.grodzovsky@amd.com>
Reviewed-by Leo Li <sunpeng.li@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent fc42d47c
  • mirror @mirror

    mentioned in commit 575197ee

    ·

    mentioned in commit 575197ee

    Toggle commit list
  • mirror @mirror

    mentioned in commit fee538bccc3be12f51dda4aa00ec25acbcf6853f

    ·

    mentioned in commit fee538bccc3be12f51dda4aa00ec25acbcf6853f

    Toggle commit list
  • mirror @mirror

    mentioned in commit d6522f70a5be8a907e1dbdf4cdeccf89f2a8ed38

    ·

    mentioned in commit d6522f70a5be8a907e1dbdf4cdeccf89f2a8ed38

    Toggle commit list
  • mirror @mirror

    mentioned in commit 0a69bd3df0b78f5f389cfa7ff1a68aa42148d56e

    ·

    mentioned in commit 0a69bd3df0b78f5f389cfa7ff1a68aa42148d56e

    Toggle commit list
  • mirror @mirror

    mentioned in commit 35ed2925fb284fcebf3b1ba8053dce8229ce73e6

    ·

    mentioned in commit 35ed2925fb284fcebf3b1ba8053dce8229ce73e6

    Toggle commit list
  • mirror @mirror

    mentioned in commit 69555c8f3a42d1b6ed141fa64f7c5a2d196f788a

    ·

    mentioned in commit 69555c8f3a42d1b6ed141fa64f7c5a2d196f788a

    Toggle commit list
  • mirror @mirror

    mentioned in commit 953ed8ff

    ·

    mentioned in commit 953ed8ff

    Toggle commit list
  • mirror @mirror

    mentioned in commit 6adda8df81d908c5b3660b6c22bf26907f71dea6

    ·

    mentioned in commit 6adda8df81d908c5b3660b6c22bf26907f71dea6

    Toggle commit list
  • mirror @mirror

    mentioned in commit 24ad53a9c7b598f92c7d6be774907794a0743011

    ·

    mentioned in commit 24ad53a9c7b598f92c7d6be774907794a0743011

    Toggle commit list
  • mirror @mirror

    mentioned in commit ed13f174e401fd9870ed367a7f3e745933ad5c79

    ·

    mentioned in commit ed13f174e401fd9870ed367a7f3e745933ad5c79

    Toggle commit list
  • mirror @mirror

    mentioned in commit 76f0a018058086e835a181f15e7d8a32387546e3

    ·

    mentioned in commit 76f0a018058086e835a181f15e7d8a32387546e3

    Toggle commit list
  • mirror @mirror

    mentioned in commit 13e40fc5dfebae453e42c0959febb0d29e876186

    ·

    mentioned in commit 13e40fc5dfebae453e42c0959febb0d29e876186

    Toggle commit list
  • mirror @mirror

    mentioned in commit ec3fe2f1faad9c3db2cbb72b1698b815828efdef

    ·

    mentioned in commit ec3fe2f1faad9c3db2cbb72b1698b815828efdef

    Toggle commit list
  • mirror @mirror

    mentioned in commit 7d235217ac891c44c0a8e5cd7d898a700330aba3

    ·

    mentioned in commit 7d235217ac891c44c0a8e5cd7d898a700330aba3

    Toggle commit list
  • mirror @mirror

    mentioned in commit fe7a4bc3

    ·

    mentioned in commit fe7a4bc3

    Toggle commit list
  • mirror @mirror

    mentioned in commit 7b476edae3275ee43c7f2631b320b1e3fff80c69

    ·

    mentioned in commit 7b476edae3275ee43c7f2631b320b1e3fff80c69

    Toggle commit list
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment