summaryrefslogtreecommitdiffstats
path: root/0013-drm-i915-gen9-Use-a-bitmask-to-track-dirty-pipe-wate.patch
diff options
context:
space:
mode:
Diffstat (limited to '0013-drm-i915-gen9-Use-a-bitmask-to-track-dirty-pipe-wate.patch')
-rw-r--r--0013-drm-i915-gen9-Use-a-bitmask-to-track-dirty-pipe-wate.patch91
1 files changed, 91 insertions, 0 deletions
diff --git a/0013-drm-i915-gen9-Use-a-bitmask-to-track-dirty-pipe-wate.patch b/0013-drm-i915-gen9-Use-a-bitmask-to-track-dirty-pipe-wate.patch
new file mode 100644
index 000000000..959860f95
--- /dev/null
+++ b/0013-drm-i915-gen9-Use-a-bitmask-to-track-dirty-pipe-wate.patch
@@ -0,0 +1,91 @@
+From b43247a865f73fa3b73a878236b5055bfb864169 Mon Sep 17 00:00:00 2001
+From: Fedora Kernel Team <kernel-team@fedoraproject.org>
+Date: Mon, 20 Jun 2016 12:41:23 +0200
+Subject: [PATCH 13/17] drm/i915/gen9: Use a bitmask to track dirty pipe
+ watermarks
+
+Upstream: since drm-intel-next-2016-05-22
+commit 2b4b9f35d94b1b533bc23110b040b04316480b28
+
+Author: Matt Roper <matthew.d.roper@intel.com>
+AuthorDate: Thu May 12 07:06:07 2016 -0700
+Commit: Matt Roper <matthew.d.roper@intel.com>
+CommitDate: Fri May 13 07:34:40 2016 -0700
+
+ drm/i915/gen9: Use a bitmask to track dirty pipe watermarks
+
+ Slightly easier to work with than an array of bools.
+
+ Signed-off-by: Matt Roper <matthew.d.roper@intel.com>
+ Reviewed-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
+ Link: http://patchwork.freedesktop.org/patch/msgid/1463061971-19638-14-git-send-email-matthew.d.roper@intel.com
+---
+ drivers/gpu/drm/i915/i915_drv.h | 2 +-
+ drivers/gpu/drm/i915/intel_pm.c | 10 +++++-----
+ 2 files changed, 6 insertions(+), 6 deletions(-)
+
+diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
+index 237df9f..67c76b6 100644
+--- a/drivers/gpu/drm/i915/i915_drv.h
++++ b/drivers/gpu/drm/i915/i915_drv.h
+@@ -1615,7 +1615,7 @@ struct skl_ddb_allocation {
+ };
+
+ struct skl_wm_values {
+- bool dirty[I915_MAX_PIPES];
++ unsigned dirty_pipes;
+ struct skl_ddb_allocation ddb;
+ uint32_t wm_linetime[I915_MAX_PIPES];
+ uint32_t plane[I915_MAX_PIPES][I915_MAX_PLANES][8];
+diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
+index cd29ab6..611c5a1 100644
+--- a/drivers/gpu/drm/i915/intel_pm.c
++++ b/drivers/gpu/drm/i915/intel_pm.c
+@@ -3455,7 +3455,7 @@ static void skl_write_wm_values(struct drm_i915_private *dev_priv,
+ int i, level, max_level = ilk_wm_max_level(dev);
+ enum pipe pipe = crtc->pipe;
+
+- if (!new->dirty[pipe])
++ if ((new->dirty_pipes & drm_crtc_mask(&crtc->base)) == 0)
+ continue;
+
+ I915_WRITE(PIPE_WM_LINETIME(pipe), new->wm_linetime[pipe]);
+@@ -3680,7 +3680,7 @@ static void skl_update_other_pipe_wm(struct drm_device *dev,
+ WARN_ON(!wm_changed);
+
+ skl_compute_wm_results(dev, &pipe_wm, r, intel_crtc);
+- r->dirty[intel_crtc->pipe] = true;
++ r->dirty_pipes |= drm_crtc_mask(&intel_crtc->base);
+ }
+ }
+
+@@ -3783,7 +3783,7 @@ static void skl_update_wm(struct drm_crtc *crtc)
+
+
+ /* Clear all dirty flags */
+- memset(results->dirty, 0, sizeof(bool) * I915_MAX_PIPES);
++ results->dirty_pipes = 0;
+
+ skl_clear_wm(results, intel_crtc->pipe);
+
+@@ -3791,7 +3791,7 @@ static void skl_update_wm(struct drm_crtc *crtc)
+ return;
+
+ skl_compute_wm_results(dev, pipe_wm, results, intel_crtc);
+- results->dirty[intel_crtc->pipe] = true;
++ results->dirty_pipes |= drm_crtc_mask(&intel_crtc->base);
+
+ skl_update_other_pipe_wm(dev, crtc, results);
+ skl_write_wm_values(dev_priv, results);
+@@ -3952,7 +3952,7 @@ static void skl_pipe_wm_get_hw_state(struct drm_crtc *crtc)
+ if (!intel_crtc->active)
+ return;
+
+- hw->dirty[pipe] = true;
++ hw->dirty_pipes |= drm_crtc_mask(crtc);
+
+ active->linetime = hw->wm_linetime[pipe];
+
+--
+2.7.4
+