From: root <root@localhost.localdomain> In addition to calculating final watermarks, we also pre-calculate a set of intermediate watermark values at atomic check time. These intermediate watermarks are a combination of the watermarks for the old state and the new state; they should satisfy the requirements of both states which means they can be programmed immediately when we commit the atomic state (without waiting for a vblank). Once the vblank does happen, we can then re-program watermarks to the more optimal final value. The DSPARB Display Arbitration Control register is double buffered. The FIFO repartitioning happens atomically with plane updates but how the register double buffering works isn't clear at the moment. It needs to be figured out to fix the watermark updates. v2: Split the first patch of v1 into the following patches - Remove unused parameters from intel_plane_wm_parameters. - Rename skl_plane_id to wm_plane_id. - Move fifo_size from intel_plane_wm_parameters to vlv_wm_state. v3: Split the 3rd patch of v2 into the following two patches - Move fifo_size from intel_plane_wm_parameters to vlv_wm_state - Change to use intel_crtc_state instead of base CRTC object - The patch headlines are also changed to fit the requirement. v4: - Split the 3rd patch of v3 "Move fifo_size from intel_plane_wm_parameters to vlv_wm_state" to add a new one "return EINVAL when computed watermark exceeds system limitation" - Add a new patch "Move active watermarks into intel_crtc->wm.active.vlv" to be consistent with what we do on other platforms - Change the patch "Add intermediate field in intel_crtc_wm_state and handlers for two-level watermark" to use macro drm_atomic_crtc_state_for_each_plane_state to simplify the code - Change the patch "Add optimal field in intel_crtc_wm_state" to use mutex in vlv_update_wm to make assigning currently active wm_state and merging multiple wm_state become one atomic operation Signed-off-by: Maarten Lankhorst <maarten.lankhorst@xxxxxxxxxxxxxxx> Signed-off-by: Chi Ding <chix.ding@xxxxxxxxx> Maarten Lankhorst (8): drm/i915: Remove unused parameters from intel_plane_wm_parameters drm/i915: Rename skl_plane_id to wm_plane_id drm/i915/vlv: Move fifo_size from intel_plane_wm_parameters to vlv_wm_state drm/i915/vlv: return EINVAL when computed watermark exceeds system limitation drm/i915/vlv: Change to use intel_crtc_state instead of base CRTC object drm/i915/vlv: Add optimal field in intel_crtc_wm_state drm/i915/vlv: Move active watermarks into intel_crtc->wm.active.vlv drm/i915/vlv: Add intermediate field in intel_crtc_wm_state and handlers for two-level watermark drivers/gpu/drm/i915/intel_display.c | 7 +- drivers/gpu/drm/i915/intel_drv.h | 52 ++---- drivers/gpu/drm/i915/intel_pm.c | 328 +++++++++++++++++++++++------------ 3 files changed, 233 insertions(+), 154 deletions(-) -- 1.8.0.1 _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx