Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5748b6a1 authored by Chris Wilson's avatar Chris Wilson
Browse files

drm/i915: Use dev_priv consistently through the intel_frontbuffer interface



Rather than a mismash of struct drm_device *dev and struct
drm_i915_private *dev_priv being used freely within a function, be
consistent and only pass along dev_priv.

Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
Reviewed-by: default avatarJoonas Lahtinen <joonas.lahtinen@linux.intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/1470324762-2545-22-git-send-email-chris@chris-wilson.co.uk
parent faf5bf0a
Loading
Loading
Loading
Loading
+5 −5
Original line number Diff line number Diff line
@@ -4566,12 +4566,11 @@ static void intel_post_plane_update(struct intel_crtc_state *old_crtc_state)
	struct drm_atomic_state *old_state = old_crtc_state->base.state;
	struct intel_crtc_state *pipe_config =
		to_intel_crtc_state(crtc->base.state);
	struct drm_device *dev = crtc->base.dev;
	struct drm_plane *primary = crtc->base.primary;
	struct drm_plane_state *old_pri_state =
		drm_atomic_get_existing_plane_state(old_state, primary);

	intel_frontbuffer_flip(dev, pipe_config->fb_bits);
	intel_frontbuffer_flip(to_i915(crtc->base.dev), pipe_config->fb_bits);

	crtc->wm.cxsr_allowed = true;

@@ -4694,7 +4693,7 @@ static void intel_crtc_disable_planes(struct drm_crtc *crtc, unsigned plane_mask
	 * to compute the mask of flip planes precisely. For the time being
	 * consider this a flip to a NULL plane.
	 */
	intel_frontbuffer_flip(dev, INTEL_FRONTBUFFER_ALL_MASK(pipe));
	intel_frontbuffer_flip(to_i915(dev), INTEL_FRONTBUFFER_ALL_MASK(pipe));
}

static void ironlake_crtc_enable(struct drm_crtc *crtc)
@@ -10952,7 +10951,8 @@ static void intel_unpin_work_fn(struct work_struct *__work)

	i915_gem_request_put(work->flip_queued_req);

	intel_frontbuffer_flip_complete(dev, to_intel_plane(primary)->frontbuffer_bit);
	intel_frontbuffer_flip_complete(to_i915(dev),
					to_intel_plane(primary)->frontbuffer_bit);
	intel_fbc_post_update(crtc);
	drm_framebuffer_unreference(work->old_fb);

@@ -11727,7 +11727,7 @@ static int intel_crtc_page_flip(struct drm_crtc *crtc,
			  to_intel_plane(primary)->frontbuffer_bit);
	mutex_unlock(&dev->struct_mutex);

	intel_frontbuffer_flip_prepare(dev,
	intel_frontbuffer_flip_prepare(to_i915(dev),
				       to_intel_plane(primary)->frontbuffer_bit);

	trace_i915_flip_request(intel_crtc->plane, obj);
+6 −8
Original line number Diff line number Diff line
@@ -5228,7 +5228,7 @@ static void intel_edp_drrs_downclock_work(struct work_struct *work)

/**
 * intel_edp_drrs_invalidate - Disable Idleness DRRS
 * @dev: DRM device
 * @dev_priv: i915 device
 * @frontbuffer_bits: frontbuffer plane tracking bits
 *
 * This function gets called everytime rendering on the given planes start.
@@ -5236,10 +5236,9 @@ static void intel_edp_drrs_downclock_work(struct work_struct *work)
 *
 * Dirty frontbuffers relevant to DRRS are tracked in busy_frontbuffer_bits.
 */
void intel_edp_drrs_invalidate(struct drm_device *dev,
		unsigned frontbuffer_bits)
void intel_edp_drrs_invalidate(struct drm_i915_private *dev_priv,
			       unsigned int frontbuffer_bits)
{
	struct drm_i915_private *dev_priv = to_i915(dev);
	struct drm_crtc *crtc;
	enum pipe pipe;

@@ -5271,7 +5270,7 @@ void intel_edp_drrs_invalidate(struct drm_device *dev,

/**
 * intel_edp_drrs_flush - Restart Idleness DRRS
 * @dev: DRM device
 * @dev_priv: i915 device
 * @frontbuffer_bits: frontbuffer plane tracking bits
 *
 * This function gets called every time rendering on the given planes has
@@ -5281,10 +5280,9 @@ void intel_edp_drrs_invalidate(struct drm_device *dev,
 *
 * Dirty frontbuffers relevant to DRRS are tracked in busy_frontbuffer_bits.
 */
void intel_edp_drrs_flush(struct drm_device *dev,
		unsigned frontbuffer_bits)
void intel_edp_drrs_flush(struct drm_i915_private *dev_priv,
			  unsigned int frontbuffer_bits)
{
	struct drm_i915_private *dev_priv = to_i915(dev);
	struct drm_crtc *crtc;
	enum pipe pipe;

+8 −7
Original line number Diff line number Diff line
@@ -1374,9 +1374,10 @@ uint32_t intel_dp_pack_aux(const uint8_t *src, int src_bytes);
void intel_plane_destroy(struct drm_plane *plane);
void intel_edp_drrs_enable(struct intel_dp *intel_dp);
void intel_edp_drrs_disable(struct intel_dp *intel_dp);
void intel_edp_drrs_invalidate(struct drm_device *dev,
		unsigned frontbuffer_bits);
void intel_edp_drrs_flush(struct drm_device *dev, unsigned frontbuffer_bits);
void intel_edp_drrs_invalidate(struct drm_i915_private *dev_priv,
			       unsigned int frontbuffer_bits);
void intel_edp_drrs_flush(struct drm_i915_private *dev_priv,
			  unsigned int frontbuffer_bits);
bool intel_digital_port_connected(struct drm_i915_private *dev_priv,
				  struct intel_digital_port *port);

@@ -1551,13 +1552,13 @@ static inline void intel_backlight_device_unregister(struct intel_connector *con
/* intel_psr.c */
void intel_psr_enable(struct intel_dp *intel_dp);
void intel_psr_disable(struct intel_dp *intel_dp);
void intel_psr_invalidate(struct drm_device *dev,
void intel_psr_invalidate(struct drm_i915_private *dev_priv,
			  unsigned frontbuffer_bits);
void intel_psr_flush(struct drm_device *dev,
void intel_psr_flush(struct drm_i915_private *dev_priv,
		     unsigned frontbuffer_bits,
		     enum fb_op_origin origin);
void intel_psr_init(struct drm_device *dev);
void intel_psr_single_frame_update(struct drm_device *dev,
void intel_psr_single_frame_update(struct drm_i915_private *dev_priv,
				   unsigned frontbuffer_bits);

/* intel_runtime_pm.c */
+19 −28
Original line number Diff line number Diff line
@@ -70,8 +70,7 @@ void __intel_fb_obj_invalidate(struct drm_i915_gem_object *obj,
			       enum fb_op_origin origin,
			       unsigned int frontbuffer_bits)
{
	struct drm_device *dev = obj->base.dev;
	struct drm_i915_private *dev_priv = to_i915(dev);
	struct drm_i915_private *dev_priv = to_i915(obj->base.dev);

	if (origin == ORIGIN_CS) {
		spin_lock(&dev_priv->fb_tracking.lock);
@@ -80,14 +79,14 @@ void __intel_fb_obj_invalidate(struct drm_i915_gem_object *obj,
		spin_unlock(&dev_priv->fb_tracking.lock);
	}

	intel_psr_invalidate(dev, frontbuffer_bits);
	intel_edp_drrs_invalidate(dev, frontbuffer_bits);
	intel_psr_invalidate(dev_priv, frontbuffer_bits);
	intel_edp_drrs_invalidate(dev_priv, frontbuffer_bits);
	intel_fbc_invalidate(dev_priv, frontbuffer_bits, origin);
}

/**
 * intel_frontbuffer_flush - flush frontbuffer
 * @dev: DRM device
 * @dev_priv: i915 device
 * @frontbuffer_bits: frontbuffer plane tracking bits
 * @origin: which operation caused the flush
 *
@@ -97,12 +96,10 @@ void __intel_fb_obj_invalidate(struct drm_i915_gem_object *obj,
 *
 * Can be called without any locks held.
 */
static void intel_frontbuffer_flush(struct drm_device *dev,
static void intel_frontbuffer_flush(struct drm_i915_private *dev_priv,
				    unsigned frontbuffer_bits,
				    enum fb_op_origin origin)
{
	struct drm_i915_private *dev_priv = to_i915(dev);

	/* Delay flushing when rings are still busy.*/
	spin_lock(&dev_priv->fb_tracking.lock);
	frontbuffer_bits &= ~dev_priv->fb_tracking.busy_bits;
@@ -111,8 +108,8 @@ static void intel_frontbuffer_flush(struct drm_device *dev,
	if (!frontbuffer_bits)
		return;

	intel_edp_drrs_flush(dev, frontbuffer_bits);
	intel_psr_flush(dev, frontbuffer_bits, origin);
	intel_edp_drrs_flush(dev_priv, frontbuffer_bits);
	intel_psr_flush(dev_priv, frontbuffer_bits, origin);
	intel_fbc_flush(dev_priv, frontbuffer_bits, origin);
}

@@ -121,8 +118,7 @@ void __intel_fb_obj_flush(struct drm_i915_gem_object *obj,
			  enum fb_op_origin origin,
			  unsigned int frontbuffer_bits)
{
	struct drm_device *dev = obj->base.dev;
	struct drm_i915_private *dev_priv = to_i915(dev);
	struct drm_i915_private *dev_priv = to_i915(obj->base.dev);

	if (retire) {
		spin_lock(&dev_priv->fb_tracking.lock);
@@ -133,12 +129,12 @@ void __intel_fb_obj_flush(struct drm_i915_gem_object *obj,
	}

	if (frontbuffer_bits)
		intel_frontbuffer_flush(dev, frontbuffer_bits, origin);
		intel_frontbuffer_flush(dev_priv, frontbuffer_bits, origin);
}

/**
 * intel_frontbuffer_flip_prepare - prepare asynchronous frontbuffer flip
 * @dev: DRM device
 * @dev_priv: i915 device
 * @frontbuffer_bits: frontbuffer plane tracking bits
 *
 * This function gets called after scheduling a flip on @obj. The actual
@@ -148,23 +144,21 @@ void __intel_fb_obj_flush(struct drm_i915_gem_object *obj,
 *
 * Can be called without any locks held.
 */
void intel_frontbuffer_flip_prepare(struct drm_device *dev,
void intel_frontbuffer_flip_prepare(struct drm_i915_private *dev_priv,
				    unsigned frontbuffer_bits)
{
	struct drm_i915_private *dev_priv = to_i915(dev);

	spin_lock(&dev_priv->fb_tracking.lock);
	dev_priv->fb_tracking.flip_bits |= frontbuffer_bits;
	/* Remove stale busy bits due to the old buffer. */
	dev_priv->fb_tracking.busy_bits &= ~frontbuffer_bits;
	spin_unlock(&dev_priv->fb_tracking.lock);

	intel_psr_single_frame_update(dev, frontbuffer_bits);
	intel_psr_single_frame_update(dev_priv, frontbuffer_bits);
}

/**
 * intel_frontbuffer_flip_complete - complete asynchronous frontbuffer flip
 * @dev: DRM device
 * @dev_priv: i915 device
 * @frontbuffer_bits: frontbuffer plane tracking bits
 *
 * This function gets called after the flip has been latched and will complete
@@ -172,11 +166,9 @@ void intel_frontbuffer_flip_prepare(struct drm_device *dev,
 *
 * Can be called without any locks held.
 */
void intel_frontbuffer_flip_complete(struct drm_device *dev,
void intel_frontbuffer_flip_complete(struct drm_i915_private *dev_priv,
				     unsigned frontbuffer_bits)
{
	struct drm_i915_private *dev_priv = to_i915(dev);

	spin_lock(&dev_priv->fb_tracking.lock);
	/* Mask any cancelled flips. */
	frontbuffer_bits &= dev_priv->fb_tracking.flip_bits;
@@ -184,12 +176,13 @@ void intel_frontbuffer_flip_complete(struct drm_device *dev,
	spin_unlock(&dev_priv->fb_tracking.lock);

	if (frontbuffer_bits)
		intel_frontbuffer_flush(dev, frontbuffer_bits, ORIGIN_FLIP);
		intel_frontbuffer_flush(dev_priv,
					frontbuffer_bits, ORIGIN_FLIP);
}

/**
 * intel_frontbuffer_flip - synchronous frontbuffer flip
 * @dev: DRM device
 * @dev_priv: i915 device
 * @frontbuffer_bits: frontbuffer plane tracking bits
 *
 * This function gets called after scheduling a flip on @obj. This is for
@@ -198,15 +191,13 @@ void intel_frontbuffer_flip_complete(struct drm_device *dev,
 *
 * Can be called without any locks held.
 */
void intel_frontbuffer_flip(struct drm_device *dev,
void intel_frontbuffer_flip(struct drm_i915_private *dev_priv,
			    unsigned frontbuffer_bits)
{
	struct drm_i915_private *dev_priv = to_i915(dev);

	spin_lock(&dev_priv->fb_tracking.lock);
	/* Remove stale busy bits due to the old buffer. */
	dev_priv->fb_tracking.busy_bits &= ~frontbuffer_bits;
	spin_unlock(&dev_priv->fb_tracking.lock);

	intel_frontbuffer_flush(dev, frontbuffer_bits, ORIGIN_FLIP);
	intel_frontbuffer_flush(dev_priv, frontbuffer_bits, ORIGIN_FLIP);
}
+3 −4
Original line number Diff line number Diff line
@@ -24,15 +24,14 @@
#ifndef __INTEL_FRONTBUFFER_H__
#define __INTEL_FRONTBUFFER_H__

struct drm_device;
struct drm_i915_private;
struct drm_i915_gem_object;

void intel_frontbuffer_flip_prepare(struct drm_device *dev,
void intel_frontbuffer_flip_prepare(struct drm_i915_private *dev_priv,
				    unsigned frontbuffer_bits);
void intel_frontbuffer_flip_complete(struct drm_device *dev,
void intel_frontbuffer_flip_complete(struct drm_i915_private *dev_priv,
				     unsigned frontbuffer_bits);
void intel_frontbuffer_flip(struct drm_device *dev,
void intel_frontbuffer_flip(struct drm_i915_private *dev_priv,
			    unsigned frontbuffer_bits);

void __intel_fb_obj_invalidate(struct drm_i915_gem_object *obj,
Loading