From 43f66ae8340c4cd6326d6c984f9eaaa29c93f0f0 Mon Sep 17 00:00:00 2001 From: Yu Kang Ku Date: Tue, 4 Oct 2016 19:21:38 -0700 Subject: [PATCH] Experiment DDL=0, latency=45us, and cursor wm=63 Change-Id: I47211028b5224504b76dfa372defd42177521878 --- drivers/gpu/drm/i915/intel_pm.c | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c index 5d39ad2..9ed7e5b 100644 --- a/drivers/gpu/drm/i915/intel_pm.c +++ b/drivers/gpu/drm/i915/intel_pm.c @@ -942,13 +942,13 @@ static void vlv_setup_wm_latency(struct drm_device *dev) struct drm_i915_private *dev_priv = to_i915(dev); /* all latencies in usec */ - dev_priv->wm.pri_latency[VLV_WM_LEVEL_PM2] = 3; + dev_priv->wm.pri_latency[VLV_WM_LEVEL_PM2] = 45; dev_priv->wm.max_level = VLV_WM_LEVEL_PM2; if (IS_CHERRYVIEW(dev_priv)) { - dev_priv->wm.pri_latency[VLV_WM_LEVEL_PM5] = 12; - dev_priv->wm.pri_latency[VLV_WM_LEVEL_DDR_DVFS] = 33; + dev_priv->wm.pri_latency[VLV_WM_LEVEL_PM5] = 45; + dev_priv->wm.pri_latency[VLV_WM_LEVEL_DDR_DVFS] = 45; dev_priv->wm.max_level = VLV_WM_LEVEL_DDR_DVFS; } @@ -965,6 +965,9 @@ static uint16_t vlv_compute_wm_level(struct intel_plane *plane, if (dev_priv->wm.pri_latency[level] == 0) return USHRT_MAX; + if (plane->base.type == DRM_PLANE_TYPE_CURSOR) + return 63; + if (!state->base.visible) return 0; @@ -1123,7 +1126,7 @@ static void vlv_compute_wm(struct intel_crtc *crtc) struct intel_plane_state *state = to_intel_plane_state(plane->base.state); - if (!state->base.visible) + if ((plane->base.type != DRM_PLANE_TYPE_CURSOR) && !state->base.visible) continue; /* normal watermarks */ @@ -1320,10 +1323,10 @@ static void vlv_merge_wm(struct drm_device *dev, if (wm->cxsr) wm->sr = wm_state->sr[wm->level]; - wm->ddl[pipe].primary = DDL_PRECISION_HIGH | 2; - wm->ddl[pipe].sprite[0] = DDL_PRECISION_HIGH | 2; - wm->ddl[pipe].sprite[1] = DDL_PRECISION_HIGH | 2; - wm->ddl[pipe].cursor = DDL_PRECISION_HIGH | 2; + wm->ddl[pipe].primary = DDL_PRECISION_HIGH | 0; + wm->ddl[pipe].sprite[0] = DDL_PRECISION_HIGH | 0; + wm->ddl[pipe].sprite[1] = DDL_PRECISION_HIGH | 0; + wm->ddl[pipe].cursor = DDL_PRECISION_HIGH | 0; } } -- 1.9.1