diff options
author | Ville Syrjälä <ville.syrjala@linux.intel.com> | 2013-10-09 12:17:55 -0400 |
---|---|---|
committer | Daniel Vetter <daniel.vetter@ffwll.ch> | 2013-10-15 03:37:46 -0400 |
commit | 0b2ae6d72e445b58ae39cfa6ec0b8d3f53ff7a6f (patch) | |
tree | d34613b44f39a174cd900157630162205567297c /drivers/gpu/drm/i915/intel_drv.h | |
parent | 0301b3ac38708003a46f5b8ece1103ba6dc23f7c (diff) |
drm/i915: Add intel_pipe_wm and prepare for watermark pre-compute
Introduce a new struct intel_pipe_wm which contains all the
watermarks for a single pipe. Use it to unify the LP0 and LP1+
watermark computations so that we can just iterate through the
watermark levels neatly and call ilk_compute_wm_level() for each.
Also add another tool ilk_wm_merge() that merges the LP1+ watermarks
from all pipes. For that, embed one intel_pipe_wm inside intel_crtc that
contains the currently valid watermarks for each pipe.
This is mainly preparatory work for pre-computing the watermarks for
each pipe and merging them at a later time. For now the merging still
happens immediately.
v2: Add some comments about level 0 DDB split and intel_wm_config
Add WARN_ON for level 0 being disabled
s/lp_wm/merged
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Reviewed-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Diffstat (limited to 'drivers/gpu/drm/i915/intel_drv.h')
-rw-r--r-- | drivers/gpu/drm/i915/intel_drv.h | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h index 189257df7a0f..5d5d34911a7e 100644 --- a/drivers/gpu/drm/i915/intel_drv.h +++ b/drivers/gpu/drm/i915/intel_drv.h | |||
@@ -309,6 +309,12 @@ struct intel_crtc_config { | |||
309 | bool double_wide; | 309 | bool double_wide; |
310 | }; | 310 | }; |
311 | 311 | ||
312 | struct intel_pipe_wm { | ||
313 | struct intel_wm_level wm[5]; | ||
314 | uint32_t linetime; | ||
315 | bool fbc_wm_enabled; | ||
316 | }; | ||
317 | |||
312 | struct intel_crtc { | 318 | struct intel_crtc { |
313 | struct drm_crtc base; | 319 | struct drm_crtc base; |
314 | enum pipe pipe; | 320 | enum pipe pipe; |
@@ -349,6 +355,12 @@ struct intel_crtc { | |||
349 | /* Access to these should be protected by dev_priv->irq_lock. */ | 355 | /* Access to these should be protected by dev_priv->irq_lock. */ |
350 | bool cpu_fifo_underrun_disabled; | 356 | bool cpu_fifo_underrun_disabled; |
351 | bool pch_fifo_underrun_disabled; | 357 | bool pch_fifo_underrun_disabled; |
358 | |||
359 | /* per-pipe watermark state */ | ||
360 | struct { | ||
361 | /* watermarks currently being used */ | ||
362 | struct intel_pipe_wm active; | ||
363 | } wm; | ||
352 | }; | 364 | }; |
353 | 365 | ||
354 | struct intel_plane_wm_parameters { | 366 | struct intel_plane_wm_parameters { |