All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ramalingam C <ramalingam.c@intel.com>
To: intel-gfx@lists.freedesktop.org, daniel.vetter@ffwll.ch,
	chris@chris-wilson.co.uk, rodrigo.vivi@intel.com
Cc: paulo.r.zanoni@intel.com
Subject: [PATCH 1/2] drm/i915: fb_obj invalidate is divided into two functions
Date: Thu, 11 Jun 2015 15:08:34 +0530	[thread overview]
Message-ID: <1434015515-21209-1-git-send-email-ramalingam.c@intel.com> (raw)
In-Reply-To: <20150518082022.GL15256@phenom.ffwll.local>

fb_obj invalidate is divided into two functions. So that
we can invoke the frontbuffer invalidation from the flip
preparation also.

Signed-off-by: Ramalingam C <ramalingam.c@intel.com>
Cc: Chris Wilson <chris@chris-wilson.co.uk>
References: https://bugs.freedesktop.org/show_bug.cgi?id=90418
---
 drivers/gpu/drm/i915/intel_frontbuffer.c |   42 +++++++++++++++++++++++-------
 1 file changed, 33 insertions(+), 9 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_frontbuffer.c b/drivers/gpu/drm/i915/intel_frontbuffer.c
index 57095f5..4cea589 100644
--- a/drivers/gpu/drm/i915/intel_frontbuffer.c
+++ b/drivers/gpu/drm/i915/intel_frontbuffer.c
@@ -119,6 +119,33 @@ static void intel_mark_fb_busy(struct drm_device *dev,
 }
 
 /**
+ * intel_frontbuffer_invalidate - Invalidate frontbuffer
+ * @dev: DRM device
+ * @ring: set for asynchronous rendering
+ * @origin: which operation caused the invalidation
+ * @frontbuffer_bits: frontbuffer plane tracking bits
+ *
+ * This function gets called every time rendering on the given planes has
+ * started and frontbuffer caching must be invalidated.
+ *
+ * Can be called without any locks held.
+ */
+void intel_frontbuffer_invalidate(struct drm_device *dev,
+				struct intel_engine_cs *ring,
+				enum fb_op_origin origin,
+				unsigned frontbuffer_bits)
+{
+	struct drm_i915_private *dev_priv = dev->dev_private;
+
+	intel_mark_fb_busy(dev, frontbuffer_bits, ring);
+
+	intel_psr_invalidate(dev, frontbuffer_bits);
+	intel_edp_drrs_invalidate(dev, frontbuffer_bits);
+	intel_fbc_invalidate(dev_priv, frontbuffer_bits, origin);
+}
+
+
+/**
  * intel_fb_obj_invalidate - invalidate frontbuffer object
  * @obj: GEM object to invalidate
  * @ring: set for asynchronous rendering
@@ -136,26 +163,23 @@ void intel_fb_obj_invalidate(struct drm_i915_gem_object *obj,
 {
 	struct drm_device *dev = obj->base.dev;
 	struct drm_i915_private *dev_priv = dev->dev_private;
+	unsigned frontbuffer_bits;
 
 	WARN_ON(!mutex_is_locked(&dev->struct_mutex));
 
 	if (!obj->frontbuffer_bits)
 		return;
 
+	frontbuffer_bits = obj->frontbuffer_bits;
+
 	if (ring) {
 		mutex_lock(&dev_priv->fb_tracking.lock);
-		dev_priv->fb_tracking.busy_bits
-			|= obj->frontbuffer_bits;
-		dev_priv->fb_tracking.flip_bits
-			&= ~obj->frontbuffer_bits;
+		dev_priv->fb_tracking.busy_bits |= frontbuffer_bits;
+		dev_priv->fb_tracking.flip_bits &= ~frontbuffer_bits;
 		mutex_unlock(&dev_priv->fb_tracking.lock);
 	}
 
-	intel_mark_fb_busy(dev, obj->frontbuffer_bits, ring);
-
-	intel_psr_invalidate(dev, obj->frontbuffer_bits);
-	intel_edp_drrs_invalidate(dev, obj->frontbuffer_bits);
-	intel_fbc_invalidate(dev_priv, obj->frontbuffer_bits, origin);
+	intel_frontbuffer_invalidate(dev, ring, origin, frontbuffer_bits);
 }
 
 /**
-- 
1.7.9.5

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

  parent reply	other threads:[~2015-06-11  9:45 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-05-14 20:38 [PATCH] drm/i915: drrs_invalidate at flip schedule Ramalingam C
2015-05-15 11:58 ` Chris Wilson
2015-05-15 13:24   ` Ramalingam C
2015-05-15 13:56     ` Chris Wilson
2015-05-18  2:49 ` shuang.he
2015-05-18  8:20 ` Daniel Vetter
2015-06-11  9:27   ` Ramalingam C
2015-06-15  9:52     ` Daniel Vetter
2015-06-15 15:15       ` Ramalingam C
2015-06-15 15:20         ` [PATCH] drm/i915: Restarting the Idleness DRRS in drrs_flush Ramalingam C
2015-06-15 15:46           ` Daniel Vetter
2015-06-11  9:38   ` Ramalingam C [this message]
2015-06-11  9:38     ` [PATCH 2/2] drm/i915: frontbuffer invalidate at flip schedule Ramalingam C
2015-06-11  9:56       ` Chris Wilson
2015-06-11 10:57         ` Ramalingam C
2015-06-14 20:59       ` shuang.he

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1434015515-21209-1-git-send-email-ramalingam.c@intel.com \
    --to=ramalingam.c@intel.com \
    --cc=chris@chris-wilson.co.uk \
    --cc=daniel.vetter@ffwll.ch \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=paulo.r.zanoni@intel.com \
    --cc=rodrigo.vivi@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.