diff options
| author | Ankit Nautiyal <ankit.k.nautiyal@intel.com> | 2026-02-04 10:32:50 +0530 |
|---|---|---|
| committer | Ankit Nautiyal <ankit.k.nautiyal@intel.com> | 2026-02-05 14:20:30 +0530 |
| commit | fcb7a015464ddbb59001df46ea3f75a9501e131b (patch) | |
| tree | 22e93adb9c06eb3774c7fbcf8782a6713d2d89fa /drivers/gpu | |
| parent | 31106c684db72b0714013e2620ad415cc8756109 (diff) | |
| download | linux-fcb7a015464ddbb59001df46ea3f75a9501e131b.tar.gz linux-fcb7a015464ddbb59001df46ea3f75a9501e131b.zip | |
drm/i915/alpm: Disable LOBF around transitioning for LRR/seamless MN
When enabling LRR/seamless MN disable LOBF first and re-enable
afterwards.
- pre_plane_update: if LOBF was enabled, disable LOBF before the
update_lrr/update_m_n transition.
- post_plane_update: Re-enable LOBF after the transition.
Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
Reviewed-by: MichaĆ Grzelak <michal.grzelak@intel.com>
Link: https://patch.msgid.link/20260204050250.762718-6-ankit.k.nautiyal@intel.com
Diffstat (limited to 'drivers/gpu')
| -rw-r--r-- | drivers/gpu/drm/i915/display/intel_display.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c index 739a0a74e008..295f14416be7 100644 --- a/drivers/gpu/drm/i915/display/intel_display.c +++ b/drivers/gpu/drm/i915/display/intel_display.c @@ -1014,7 +1014,9 @@ static bool intel_crtc_lobf_enabling(const struct intel_crtc_state *old_crtc_sta if (!new_crtc_state->hw.active) return false; - return is_enabling(has_lobf, old_crtc_state, new_crtc_state); + return is_enabling(has_lobf, old_crtc_state, new_crtc_state) || + (new_crtc_state->has_lobf && + (new_crtc_state->update_lrr || new_crtc_state->update_m_n)); } static bool intel_crtc_lobf_disabling(const struct intel_crtc_state *old_crtc_state, @@ -1023,7 +1025,9 @@ static bool intel_crtc_lobf_disabling(const struct intel_crtc_state *old_crtc_st if (!old_crtc_state->hw.active) return false; - return is_disabling(has_lobf, old_crtc_state, new_crtc_state); + return is_disabling(has_lobf, old_crtc_state, new_crtc_state) || + (old_crtc_state->has_lobf && + (new_crtc_state->update_lrr || new_crtc_state->update_m_n)); } #undef is_disabling |
