Commit c48b86f9 authored by Ville Syrjälä's avatar Ville Syrjälä

drm/i915: Wrap plane update/disable hook calls

Wrap the .update_plane()/.update_slave()/.disable_plane() vfunc
calls into helpers which also take care to emit the appropriate
tracepoint.
Signed-off-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20190206204910.13965-4-ville.syrjala@linux.intel.comReviewed-by: default avatarRodrigo Vivi <rodrigo.vivi@intel.com>
parent d64e6078
...@@ -217,6 +217,35 @@ skl_next_plane_to_commit(struct intel_atomic_state *state, ...@@ -217,6 +217,35 @@ skl_next_plane_to_commit(struct intel_atomic_state *state,
return NULL; return NULL;
} }
void intel_update_plane(struct intel_plane *plane,
const struct intel_crtc_state *crtc_state,
const struct intel_plane_state *plane_state)
{
struct intel_crtc *crtc = to_intel_crtc(crtc_state->base.crtc);
trace_intel_update_plane(&plane->base, crtc);
plane->update_plane(plane, crtc_state, plane_state);
}
void intel_update_slave(struct intel_plane *plane,
const struct intel_crtc_state *crtc_state,
const struct intel_plane_state *plane_state)
{
struct intel_crtc *crtc = to_intel_crtc(crtc_state->base.crtc);
trace_intel_update_plane(&plane->base, crtc);
plane->update_slave(plane, crtc_state, plane_state);
}
void intel_disable_plane(struct intel_plane *plane,
const struct intel_crtc_state *crtc_state)
{
struct intel_crtc *crtc = to_intel_crtc(crtc_state->base.crtc);
trace_intel_disable_plane(&plane->base, crtc);
plane->disable_plane(plane, crtc_state);
}
void skl_update_planes_on_crtc(struct intel_atomic_state *state, void skl_update_planes_on_crtc(struct intel_atomic_state *state,
struct intel_crtc *crtc) struct intel_crtc *crtc)
{ {
...@@ -241,8 +270,7 @@ void skl_update_planes_on_crtc(struct intel_atomic_state *state, ...@@ -241,8 +270,7 @@ void skl_update_planes_on_crtc(struct intel_atomic_state *state,
intel_atomic_get_new_plane_state(state, plane); intel_atomic_get_new_plane_state(state, plane);
if (new_plane_state->base.visible) { if (new_plane_state->base.visible) {
trace_intel_update_plane(&plane->base, crtc); intel_update_plane(plane, new_crtc_state, new_plane_state);
plane->update_plane(plane, new_crtc_state, new_plane_state);
} else if (new_plane_state->slave) { } else if (new_plane_state->slave) {
struct intel_plane *master = struct intel_plane *master =
new_plane_state->linked_plane; new_plane_state->linked_plane;
...@@ -259,11 +287,9 @@ void skl_update_planes_on_crtc(struct intel_atomic_state *state, ...@@ -259,11 +287,9 @@ void skl_update_planes_on_crtc(struct intel_atomic_state *state,
new_plane_state = new_plane_state =
intel_atomic_get_new_plane_state(state, master); intel_atomic_get_new_plane_state(state, master);
trace_intel_update_plane(&plane->base, crtc); intel_update_slave(plane, new_crtc_state, new_plane_state);
plane->update_slave(plane, new_crtc_state, new_plane_state);
} else { } else {
trace_intel_disable_plane(&plane->base, crtc); intel_disable_plane(plane, new_crtc_state);
plane->disable_plane(plane, new_crtc_state);
} }
} }
} }
...@@ -283,13 +309,10 @@ void i9xx_update_planes_on_crtc(struct intel_atomic_state *state, ...@@ -283,13 +309,10 @@ void i9xx_update_planes_on_crtc(struct intel_atomic_state *state,
!(update_mask & BIT(plane->id))) !(update_mask & BIT(plane->id)))
continue; continue;
if (new_plane_state->base.visible) { if (new_plane_state->base.visible)
trace_intel_update_plane(&plane->base, crtc); intel_update_plane(plane, new_crtc_state, new_plane_state);
plane->update_plane(plane, new_crtc_state, new_plane_state); else
} else { intel_disable_plane(plane, new_crtc_state);
trace_intel_disable_plane(&plane->base, crtc);
plane->disable_plane(plane, new_crtc_state);
}
} }
} }
......
...@@ -2820,8 +2820,7 @@ static void intel_plane_disable_noatomic(struct intel_crtc *crtc, ...@@ -2820,8 +2820,7 @@ static void intel_plane_disable_noatomic(struct intel_crtc *crtc,
if (plane->id == PLANE_PRIMARY) if (plane->id == PLANE_PRIMARY)
intel_pre_disable_primary_noatomic(&crtc->base); intel_pre_disable_primary_noatomic(&crtc->base);
trace_intel_disable_plane(&plane->base, crtc); intel_disable_plane(plane, crtc_state);
plane->disable_plane(plane, crtc_state);
} }
static void static void
...@@ -5589,8 +5588,7 @@ static void intel_crtc_disable_planes(struct intel_atomic_state *state, ...@@ -5589,8 +5588,7 @@ static void intel_crtc_disable_planes(struct intel_atomic_state *state,
!(update_mask & BIT(plane->id))) !(update_mask & BIT(plane->id)))
continue; continue;
trace_intel_disable_plane(&plane->base, crtc); intel_disable_plane(plane, new_crtc_state);
plane->disable_plane(plane, new_crtc_state);
if (old_plane_state->base.visible) if (old_plane_state->base.visible)
fb_bits |= plane->frontbuffer_bit; fb_bits |= plane->frontbuffer_bit;
...@@ -14091,14 +14089,11 @@ intel_legacy_cursor_update(struct drm_plane *plane, ...@@ -14091,14 +14089,11 @@ intel_legacy_cursor_update(struct drm_plane *plane,
*/ */
crtc_state->active_planes = new_crtc_state->active_planes; crtc_state->active_planes = new_crtc_state->active_planes;
if (plane->state->visible) { if (plane->state->visible)
trace_intel_update_plane(plane, to_intel_crtc(crtc)); intel_update_plane(intel_plane, crtc_state,
intel_plane->update_plane(intel_plane, crtc_state, to_intel_plane_state(plane->state));
to_intel_plane_state(plane->state)); else
} else { intel_disable_plane(intel_plane, crtc_state);
trace_intel_disable_plane(plane, to_intel_crtc(crtc));
intel_plane->disable_plane(intel_plane, crtc_state);
}
intel_plane_unpin_fb(to_intel_plane_state(old_plane_state)); intel_plane_unpin_fb(to_intel_plane_state(old_plane_state));
......
...@@ -2378,6 +2378,14 @@ int intel_atomic_setup_scalers(struct drm_i915_private *dev_priv, ...@@ -2378,6 +2378,14 @@ int intel_atomic_setup_scalers(struct drm_i915_private *dev_priv,
struct intel_crtc_state *crtc_state); struct intel_crtc_state *crtc_state);
/* intel_atomic_plane.c */ /* intel_atomic_plane.c */
void intel_update_plane(struct intel_plane *plane,
const struct intel_crtc_state *crtc_state,
const struct intel_plane_state *plane_state);
void intel_update_slave(struct intel_plane *plane,
const struct intel_crtc_state *crtc_state,
const struct intel_plane_state *plane_state);
void intel_disable_plane(struct intel_plane *plane,
const struct intel_crtc_state *crtc_state);
struct intel_plane *intel_plane_alloc(void); struct intel_plane *intel_plane_alloc(void);
void intel_plane_free(struct intel_plane *plane); void intel_plane_free(struct intel_plane *plane);
struct drm_plane_state *intel_plane_duplicate_state(struct drm_plane *plane); struct drm_plane_state *intel_plane_duplicate_state(struct drm_plane *plane);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment