|
@@ -98,14 +98,12 @@ static void intel_increase_pllclock(struct drm_device *dev,
|
|
|
* intel_mark_fb_busy - mark given planes as busy
|
|
|
* @dev: DRM device
|
|
|
* @frontbuffer_bits: bits for the affected planes
|
|
|
- * @ring: optional ring for asynchronous commands
|
|
|
*
|
|
|
* This function gets called every time the screen contents change. It can be
|
|
|
* used to keep e.g. the update rate at the nominal refresh rate with DRRS.
|
|
|
*/
|
|
|
static void intel_mark_fb_busy(struct drm_device *dev,
|
|
|
- unsigned frontbuffer_bits,
|
|
|
- struct intel_engine_cs *ring)
|
|
|
+ unsigned frontbuffer_bits)
|
|
|
{
|
|
|
struct drm_i915_private *dev_priv = dev->dev_private;
|
|
|
enum pipe pipe;
|
|
@@ -121,17 +119,15 @@ static void intel_mark_fb_busy(struct drm_device *dev,
|
|
|
/**
|
|
|
* intel_fb_obj_invalidate - invalidate frontbuffer object
|
|
|
* @obj: GEM object to invalidate
|
|
|
- * @ring: set for asynchronous rendering
|
|
|
* @origin: which operation caused the invalidation
|
|
|
*
|
|
|
* This function gets called every time rendering on the given object starts and
|
|
|
* frontbuffer caching (fbc, low refresh rate for DRRS, panel self refresh) must
|
|
|
- * be invalidated. If @ring is non-NULL any subsequent invalidation will be delayed
|
|
|
+ * be invalidated. For ORIGIN_CS any subsequent invalidation will be delayed
|
|
|
* until the rendering completes or a flip on this frontbuffer plane is
|
|
|
* scheduled.
|
|
|
*/
|
|
|
void intel_fb_obj_invalidate(struct drm_i915_gem_object *obj,
|
|
|
- struct intel_engine_cs *ring,
|
|
|
enum fb_op_origin origin)
|
|
|
{
|
|
|
struct drm_device *dev = obj->base.dev;
|
|
@@ -142,7 +138,7 @@ void intel_fb_obj_invalidate(struct drm_i915_gem_object *obj,
|
|
|
if (!obj->frontbuffer_bits)
|
|
|
return;
|
|
|
|
|
|
- if (ring) {
|
|
|
+ if (origin == ORIGIN_CS) {
|
|
|
mutex_lock(&dev_priv->fb_tracking.lock);
|
|
|
dev_priv->fb_tracking.busy_bits
|
|
|
|= obj->frontbuffer_bits;
|
|
@@ -151,7 +147,7 @@ void intel_fb_obj_invalidate(struct drm_i915_gem_object *obj,
|
|
|
mutex_unlock(&dev_priv->fb_tracking.lock);
|
|
|
}
|
|
|
|
|
|
- intel_mark_fb_busy(dev, obj->frontbuffer_bits, ring);
|
|
|
+ intel_mark_fb_busy(dev, obj->frontbuffer_bits);
|
|
|
|
|
|
intel_psr_invalidate(dev, obj->frontbuffer_bits);
|
|
|
intel_edp_drrs_invalidate(dev, obj->frontbuffer_bits);
|
|
@@ -179,7 +175,7 @@ void intel_frontbuffer_flush(struct drm_device *dev,
|
|
|
frontbuffer_bits &= ~dev_priv->fb_tracking.busy_bits;
|
|
|
mutex_unlock(&dev_priv->fb_tracking.lock);
|
|
|
|
|
|
- intel_mark_fb_busy(dev, frontbuffer_bits, NULL);
|
|
|
+ intel_mark_fb_busy(dev, frontbuffer_bits);
|
|
|
|
|
|
intel_edp_drrs_flush(dev, frontbuffer_bits);
|
|
|
intel_psr_flush(dev, frontbuffer_bits);
|