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

drm/i915: Switch fbc over to for_each_new_intel_plane_in_state()

Stop using the old for_each_intel_plane_in_state() type iteration
macro and replace it with for_each_new_intel_plane_in_state().
And similarly replace drm_atomic_get_existing_crtc_state() with
intel_atomic_get_new_crtc_state(). Switch over to intel_ types
as well to make the code less cluttered.

v2: s/plane/i9xx_plane/ etc. (James)

Cc: James Ausmus <james.ausmus@intel.com>
Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Reviewed-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
Link: https://patchwork.freedesktop.org/patch/msgid/20171117191917.11506-8-ville.syrjala@linux.intel.comSigned-off-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
parent 81894b2f
...@@ -560,13 +560,13 @@ struct i915_hotplug { ...@@ -560,13 +560,13 @@ struct i915_hotplug {
for_each_power_well_rev(__dev_priv, __power_well) \ for_each_power_well_rev(__dev_priv, __power_well) \
for_each_if ((__power_well)->domains & (__domain_mask)) for_each_if ((__power_well)->domains & (__domain_mask))
#define for_each_intel_plane_in_state(__state, plane, plane_state, __i) \ #define for_each_new_intel_plane_in_state(__state, plane, new_plane_state, __i) \
for ((__i) = 0; \ for ((__i) = 0; \
(__i) < (__state)->base.dev->mode_config.num_total_plane && \ (__i) < (__state)->base.dev->mode_config.num_total_plane && \
((plane) = to_intel_plane((__state)->base.planes[__i].ptr), \ ((plane) = to_intel_plane((__state)->base.planes[__i].ptr), \
(plane_state) = to_intel_plane_state((__state)->base.planes[__i].state), 1); \ (new_plane_state) = to_intel_plane_state((__state)->base.planes[__i].new_state), 1); \
(__i)++) \ (__i)++) \
for_each_if (plane_state) for_each_if (plane)
#define for_each_new_intel_crtc_in_state(__state, crtc, new_crtc_state, __i) \ #define for_each_new_intel_crtc_in_state(__state, crtc, new_crtc_state, __i) \
for ((__i) = 0; \ for ((__i) = 0; \
...@@ -576,7 +576,6 @@ struct i915_hotplug { ...@@ -576,7 +576,6 @@ struct i915_hotplug {
(__i)++) \ (__i)++) \
for_each_if (crtc) for_each_if (crtc)
#define for_each_oldnew_intel_plane_in_state(__state, plane, old_plane_state, new_plane_state, __i) \ #define for_each_oldnew_intel_plane_in_state(__state, plane, old_plane_state, new_plane_state, __i) \
for ((__i) = 0; \ for ((__i) = 0; \
(__i) < (__state)->base.dev->mode_config.num_total_plane && \ (__i) < (__state)->base.dev->mode_config.num_total_plane && \
......
...@@ -12080,7 +12080,7 @@ static int intel_atomic_check(struct drm_device *dev, ...@@ -12080,7 +12080,7 @@ static int intel_atomic_check(struct drm_device *dev,
if (ret) if (ret)
return ret; return ret;
intel_fbc_choose_crtc(dev_priv, state); intel_fbc_choose_crtc(dev_priv, intel_state);
return calc_watermark_data(state); return calc_watermark_data(state);
} }
......
...@@ -1652,7 +1652,7 @@ static inline void intel_fbdev_restore_mode(struct drm_device *dev) ...@@ -1652,7 +1652,7 @@ static inline void intel_fbdev_restore_mode(struct drm_device *dev)
/* intel_fbc.c */ /* intel_fbc.c */
void intel_fbc_choose_crtc(struct drm_i915_private *dev_priv, void intel_fbc_choose_crtc(struct drm_i915_private *dev_priv,
struct drm_atomic_state *state); struct intel_atomic_state *state);
bool intel_fbc_is_active(struct drm_i915_private *dev_priv); bool intel_fbc_is_active(struct drm_i915_private *dev_priv);
void intel_fbc_pre_update(struct intel_crtc *crtc, void intel_fbc_pre_update(struct intel_crtc *crtc,
struct intel_crtc_state *crtc_state, struct intel_crtc_state *crtc_state,
......
...@@ -1054,11 +1054,11 @@ void intel_fbc_flush(struct drm_i915_private *dev_priv, ...@@ -1054,11 +1054,11 @@ void intel_fbc_flush(struct drm_i915_private *dev_priv,
* enable FBC for the chosen CRTC. If it does, it will set dev_priv->fbc.crtc. * enable FBC for the chosen CRTC. If it does, it will set dev_priv->fbc.crtc.
*/ */
void intel_fbc_choose_crtc(struct drm_i915_private *dev_priv, void intel_fbc_choose_crtc(struct drm_i915_private *dev_priv,
struct drm_atomic_state *state) struct intel_atomic_state *state)
{ {
struct intel_fbc *fbc = &dev_priv->fbc; struct intel_fbc *fbc = &dev_priv->fbc;
struct drm_plane *plane; struct intel_plane *plane;
struct drm_plane_state *plane_state; struct intel_plane_state *plane_state;
bool crtc_chosen = false; bool crtc_chosen = false;
int i; int i;
...@@ -1066,7 +1066,7 @@ void intel_fbc_choose_crtc(struct drm_i915_private *dev_priv, ...@@ -1066,7 +1066,7 @@ void intel_fbc_choose_crtc(struct drm_i915_private *dev_priv,
/* Does this atomic commit involve the CRTC currently tied to FBC? */ /* Does this atomic commit involve the CRTC currently tied to FBC? */
if (fbc->crtc && if (fbc->crtc &&
!drm_atomic_get_existing_crtc_state(state, &fbc->crtc->base)) !intel_atomic_get_new_crtc_state(state, fbc->crtc))
goto out; goto out;
if (!intel_fbc_can_enable(dev_priv)) if (!intel_fbc_can_enable(dev_priv))
...@@ -1076,13 +1076,11 @@ void intel_fbc_choose_crtc(struct drm_i915_private *dev_priv, ...@@ -1076,13 +1076,11 @@ void intel_fbc_choose_crtc(struct drm_i915_private *dev_priv,
* plane. We could go for fancier schemes such as checking the plane * plane. We could go for fancier schemes such as checking the plane
* size, but this would just affect the few platforms that don't tie FBC * size, but this would just affect the few platforms that don't tie FBC
* to pipe or plane A. */ * to pipe or plane A. */
for_each_new_plane_in_state(state, plane, plane_state, i) { for_each_new_intel_plane_in_state(state, plane, plane_state, i) {
struct intel_plane_state *intel_plane_state = struct intel_crtc_state *crtc_state;
to_intel_plane_state(plane_state); struct intel_crtc *crtc = to_intel_crtc(plane_state->base.crtc);
struct intel_crtc_state *intel_crtc_state;
struct intel_crtc *crtc = to_intel_crtc(plane_state->crtc);
if (!intel_plane_state->base.visible) if (!plane_state->base.visible)
continue; continue;
if (fbc_on_pipe_a_only(dev_priv) && crtc->pipe != PIPE_A) if (fbc_on_pipe_a_only(dev_priv) && crtc->pipe != PIPE_A)
...@@ -1091,10 +1089,9 @@ void intel_fbc_choose_crtc(struct drm_i915_private *dev_priv, ...@@ -1091,10 +1089,9 @@ void intel_fbc_choose_crtc(struct drm_i915_private *dev_priv,
if (fbc_on_plane_a_only(dev_priv) && crtc->i9xx_plane != PLANE_A) if (fbc_on_plane_a_only(dev_priv) && crtc->i9xx_plane != PLANE_A)
continue; continue;
intel_crtc_state = to_intel_crtc_state( crtc_state = intel_atomic_get_new_crtc_state(state, crtc);
drm_atomic_get_existing_crtc_state(state, &crtc->base));
intel_crtc_state->enable_fbc = true; crtc_state->enable_fbc = true;
crtc_chosen = true; crtc_chosen = true;
break; break;
} }
......
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