[Intel-gfx] [PATCH 4/9] drm/i915: Use drm_plane_state.{src, dst, visible}

Sean Paul seanpaul at chromium.org
Mon Aug 1 15:10:17 UTC 2016


On Tue, Jul 26, 2016 at 12:06 PM,  <ville.syrjala at linux.intel.com> wrote:
> From: Ville Syrjälä <ville.syrjala at linux.intel.com>
>
> Replace the private drm_rects/flags in intel_plane_state
> with the ones now living in drm_plane_state.
>
> Signed-off-by: Ville Syrjälä <ville.syrjala at linux.intel.com>

Reviewed-by: Sean Paul <seanpaul at chromium.org>

> ---
>  drivers/gpu/drm/i915/intel_atomic_plane.c |  20 ++---
>  drivers/gpu/drm/i915/intel_display.c      | 132 +++++++++++++++---------------
>  drivers/gpu/drm/i915/intel_drv.h          |   3 -
>  drivers/gpu/drm/i915/intel_fbc.c          |  12 +--
>  drivers/gpu/drm/i915/intel_pm.c           |  60 +++++++-------
>  drivers/gpu/drm/i915/intel_sprite.c       |  84 +++++++++----------
>  6 files changed, 156 insertions(+), 155 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/intel_atomic_plane.c b/drivers/gpu/drm/i915/intel_atomic_plane.c
> index 7de7721f65bc..14d40261db21 100644
> --- a/drivers/gpu/drm/i915/intel_atomic_plane.c
> +++ b/drivers/gpu/drm/i915/intel_atomic_plane.c
> @@ -139,14 +139,14 @@ static int intel_plane_atomic_check(struct drm_plane *plane,
>          * we want to keep another copy internal to our driver that we can
>          * clip/modify ourselves.
>          */
> -       intel_state->src.x1 = state->src_x;
> -       intel_state->src.y1 = state->src_y;
> -       intel_state->src.x2 = state->src_x + state->src_w;
> -       intel_state->src.y2 = state->src_y + state->src_h;
> -       intel_state->dst.x1 = state->crtc_x;
> -       intel_state->dst.y1 = state->crtc_y;
> -       intel_state->dst.x2 = state->crtc_x + state->crtc_w;
> -       intel_state->dst.y2 = state->crtc_y + state->crtc_h;
> +       intel_state->base.src.x1 = state->src_x;
> +       intel_state->base.src.y1 = state->src_y;
> +       intel_state->base.src.x2 = state->src_x + state->src_w;
> +       intel_state->base.src.y2 = state->src_y + state->src_h;
> +       intel_state->base.dst.x1 = state->crtc_x;
> +       intel_state->base.dst.y1 = state->crtc_y;
> +       intel_state->base.dst.x2 = state->crtc_x + state->crtc_w;
> +       intel_state->base.dst.y2 = state->crtc_y + state->crtc_h;
>
>         /* Clip all planes to CRTC size, or 0x0 if CRTC is disabled */
>         intel_state->clip.x1 = 0;
> @@ -180,7 +180,7 @@ static int intel_plane_atomic_check(struct drm_plane *plane,
>                 }
>         }
>
> -       intel_state->visible = false;
> +       intel_state->base.visible = false;
>         ret = intel_plane->check_plane(plane, crtc_state, intel_state);
>         if (ret)
>                 return ret;
> @@ -196,7 +196,7 @@ static void intel_plane_atomic_update(struct drm_plane *plane,
>                 to_intel_plane_state(plane->state);
>         struct drm_crtc *crtc = plane->state->crtc ?: old_state->crtc;
>
> -       if (intel_state->visible)
> +       if (intel_state->base.visible)
>                 intel_plane->update_plane(plane,
>                                           to_intel_crtc_state(crtc->state),
>                                           intel_state);
> diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
> index 78beb7e9d384..4f67b7c19b75 100644
> --- a/drivers/gpu/drm/i915/intel_display.c
> +++ b/drivers/gpu/drm/i915/intel_display.c
> @@ -2565,7 +2565,7 @@ intel_find_initial_plane_obj(struct intel_crtc *intel_crtc,
>          * simplest solution is to just disable the primary plane now and
>          * pretend the BIOS never had it enabled.
>          */
> -       to_intel_plane_state(plane_state)->visible = false;
> +       to_intel_plane_state(plane_state)->base.visible = false;
>         crtc_state->plane_mask &= ~(1 << drm_plane_index(primary));
>         intel_pre_disable_primary_noatomic(&intel_crtc->base);
>         intel_plane->disable_plane(primary, &intel_crtc->base);
> @@ -2583,14 +2583,14 @@ valid_fb:
>         plane_state->crtc_w = fb->width;
>         plane_state->crtc_h = fb->height;
>
> -       intel_state->src.x1 = plane_state->src_x;
> -       intel_state->src.y1 = plane_state->src_y;
> -       intel_state->src.x2 = plane_state->src_x + plane_state->src_w;
> -       intel_state->src.y2 = plane_state->src_y + plane_state->src_h;
> -       intel_state->dst.x1 = plane_state->crtc_x;
> -       intel_state->dst.y1 = plane_state->crtc_y;
> -       intel_state->dst.x2 = plane_state->crtc_x + plane_state->crtc_w;
> -       intel_state->dst.y2 = plane_state->crtc_y + plane_state->crtc_h;
> +       intel_state->base.src.x1 = plane_state->src_x;
> +       intel_state->base.src.y1 = plane_state->src_y;
> +       intel_state->base.src.x2 = plane_state->src_x + plane_state->src_w;
> +       intel_state->base.src.y2 = plane_state->src_y + plane_state->src_h;
> +       intel_state->base.dst.x1 = plane_state->crtc_x;
> +       intel_state->base.dst.y1 = plane_state->crtc_y;
> +       intel_state->base.dst.x2 = plane_state->crtc_x + plane_state->crtc_w;
> +       intel_state->base.dst.y2 = plane_state->crtc_y + plane_state->crtc_h;
>
>         obj = intel_fb_obj(fb);
>         if (obj->tiling_mode != I915_TILING_NONE)
> @@ -2618,8 +2618,8 @@ static void i9xx_update_primary_plane(struct drm_plane *primary,
>         i915_reg_t reg = DSPCNTR(plane);
>         unsigned int rotation = plane_state->base.rotation;
>         int cpp = drm_format_plane_cpp(fb->pixel_format, 0);
> -       int x = plane_state->src.x1 >> 16;
> -       int y = plane_state->src.y1 >> 16;
> +       int x = plane_state->base.src.x1 >> 16;
> +       int y = plane_state->base.src.y1 >> 16;
>
>         dspcntr = DISPPLANE_GAMMA_ENABLE;
>
> @@ -2748,8 +2748,8 @@ static void ironlake_update_primary_plane(struct drm_plane *primary,
>         i915_reg_t reg = DSPCNTR(plane);
>         unsigned int rotation = plane_state->base.rotation;
>         int cpp = drm_format_plane_cpp(fb->pixel_format, 0);
> -       int x = plane_state->src.x1 >> 16;
> -       int y = plane_state->src.y1 >> 16;
> +       int x = plane_state->base.src.x1 >> 16;
> +       int y = plane_state->base.src.y1 >> 16;
>
>         dspcntr = DISPPLANE_GAMMA_ENABLE;
>         dspcntr |= DISPLAY_PLANE_ENABLE;
> @@ -2987,14 +2987,14 @@ static void skylake_update_primary_plane(struct drm_plane *plane,
>         int x_offset, y_offset;
>         u32 surf_addr;
>         int scaler_id = plane_state->scaler_id;
> -       int src_x = plane_state->src.x1 >> 16;
> -       int src_y = plane_state->src.y1 >> 16;
> -       int src_w = drm_rect_width(&plane_state->src) >> 16;
> -       int src_h = drm_rect_height(&plane_state->src) >> 16;
> -       int dst_x = plane_state->dst.x1;
> -       int dst_y = plane_state->dst.y1;
> -       int dst_w = drm_rect_width(&plane_state->dst);
> -       int dst_h = drm_rect_height(&plane_state->dst);
> +       int src_x = plane_state->base.src.x1 >> 16;
> +       int src_y = plane_state->base.src.y1 >> 16;
> +       int src_w = drm_rect_width(&plane_state->base.src) >> 16;
> +       int src_h = drm_rect_height(&plane_state->base.src) >> 16;
> +       int dst_x = plane_state->base.dst.x1;
> +       int dst_y = plane_state->base.dst.y1;
> +       int dst_w = drm_rect_width(&plane_state->base.dst);
> +       int dst_h = drm_rect_height(&plane_state->base.dst);
>
>         plane_ctl = PLANE_CTL_ENABLE |
>                     PLANE_CTL_PIPE_GAMMA_ENABLE |
> @@ -3009,7 +3009,7 @@ static void skylake_update_primary_plane(struct drm_plane *plane,
>                                                fb->pixel_format);
>         surf_addr = intel_plane_obj_offset(to_intel_plane(plane), obj, 0);
>
> -       WARN_ON(drm_rect_width(&plane_state->src) == 0);
> +       WARN_ON(drm_rect_width(&plane_state->base.src) == 0);
>
>         if (intel_rotation_90_or_270(rotation)) {
>                 int cpp = drm_format_plane_cpp(fb->pixel_format, 0);
> @@ -3098,7 +3098,7 @@ static void intel_update_primary_planes(struct drm_device *dev)
>                 drm_modeset_lock_crtc(crtc, &plane->base);
>                 plane_state = to_intel_plane_state(plane->base.state);
>
> -               if (plane_state->visible)
> +               if (plane_state->base.visible)
>                         plane->update_plane(&plane->base,
>                                             to_intel_crtc_state(crtc->state),
>                                             plane_state);
> @@ -4273,7 +4273,7 @@ static int skl_update_scaler_plane(struct intel_crtc_state *crtc_state,
>         struct drm_framebuffer *fb = plane_state->base.fb;
>         int ret;
>
> -       bool force_detach = !fb || !plane_state->visible;
> +       bool force_detach = !fb || !plane_state->base.visible;
>
>         DRM_DEBUG_KMS("Updating scaler for [PLANE:%d:%s] scaler_user index %u.%u\n",
>                       intel_plane->base.base.id, intel_plane->base.name,
> @@ -4283,10 +4283,10 @@ static int skl_update_scaler_plane(struct intel_crtc_state *crtc_state,
>                                 drm_plane_index(&intel_plane->base),
>                                 &plane_state->scaler_id,
>                                 plane_state->base.rotation,
> -                               drm_rect_width(&plane_state->src) >> 16,
> -                               drm_rect_height(&plane_state->src) >> 16,
> -                               drm_rect_width(&plane_state->dst),
> -                               drm_rect_height(&plane_state->dst));
> +                               drm_rect_width(&plane_state->base.src) >> 16,
> +                               drm_rect_height(&plane_state->base.src) >> 16,
> +                               drm_rect_width(&plane_state->base.dst),
> +                               drm_rect_height(&plane_state->base.dst));
>
>         if (ret || plane_state->scaler_id < 0)
>                 return ret;
> @@ -4584,9 +4584,9 @@ static void intel_post_plane_update(struct intel_crtc_state *old_crtc_state)
>
>                 intel_fbc_post_update(crtc);
>
> -               if (primary_state->visible &&
> +               if (primary_state->base.visible &&
>                     (needs_modeset(&pipe_config->base) ||
> -                    !old_primary_state->visible))
> +                    !old_primary_state->base.visible))
>                         intel_post_enable_primary(&crtc->base);
>         }
>  }
> @@ -4612,8 +4612,8 @@ static void intel_pre_plane_update(struct intel_crtc_state *old_crtc_state)
>
>                 intel_fbc_pre_update(crtc, pipe_config, primary_state);
>
> -               if (old_primary_state->visible &&
> -                   (modeset || !primary_state->visible))
> +               if (old_primary_state->base.visible &&
> +                   (modeset || !primary_state->base.visible))
>                         intel_pre_disable_primary(&crtc->base);
>         }
>
> @@ -6298,13 +6298,13 @@ static void intel_crtc_disable_noatomic(struct drm_crtc *crtc)
>         if (!intel_crtc->active)
>                 return;
>
> -       if (to_intel_plane_state(crtc->primary->state)->visible) {
> +       if (to_intel_plane_state(crtc->primary->state)->base.visible) {
>                 WARN_ON(intel_crtc->flip_work);
>
>                 intel_pre_disable_primary_noatomic(crtc);
>
>                 intel_crtc_disable_planes(crtc, 1 << drm_plane_index(crtc->primary));
> -               to_intel_plane_state(crtc->primary->state)->visible = false;
> +               to_intel_plane_state(crtc->primary->state)->base.visible = false;
>         }
>
>         dev_priv->display.crtc_disable(crtc);
> @@ -10178,7 +10178,7 @@ static void i845_update_cursor(struct drm_crtc *crtc, u32 base,
>         struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
>         uint32_t cntl = 0, size = 0;
>
> -       if (plane_state && plane_state->visible) {
> +       if (plane_state && plane_state->base.visible) {
>                 unsigned int width = plane_state->base.crtc_w;
>                 unsigned int height = plane_state->base.crtc_h;
>                 unsigned int stride = roundup_pow_of_two(width) * 4;
> @@ -10242,7 +10242,7 @@ static void i9xx_update_cursor(struct drm_crtc *crtc, u32 base,
>         int pipe = intel_crtc->pipe;
>         uint32_t cntl = 0;
>
> -       if (plane_state && plane_state->visible) {
> +       if (plane_state && plane_state->base.visible) {
>                 cntl = MCURSOR_GAMMA_ENABLE;
>                 switch (plane_state->base.crtc_w) {
>                         case 64:
> @@ -11824,7 +11824,7 @@ static bool intel_wm_need_update(struct drm_plane *plane,
>         struct intel_plane_state *cur = to_intel_plane_state(plane->state);
>
>         /* Update watermarks on tiling or size changes. */
> -       if (new->visible != cur->visible)
> +       if (new->base.visible != cur->base.visible)
>                 return true;
>
>         if (!cur->base.fb || !new->base.fb)
> @@ -11832,10 +11832,10 @@ static bool intel_wm_need_update(struct drm_plane *plane,
>
>         if (cur->base.fb->modifier[0] != new->base.fb->modifier[0] ||
>             cur->base.rotation != new->base.rotation ||
> -           drm_rect_width(&new->src) != drm_rect_width(&cur->src) ||
> -           drm_rect_height(&new->src) != drm_rect_height(&cur->src) ||
> -           drm_rect_width(&new->dst) != drm_rect_width(&cur->dst) ||
> -           drm_rect_height(&new->dst) != drm_rect_height(&cur->dst))
> +           drm_rect_width(&new->base.src) != drm_rect_width(&cur->base.src) ||
> +           drm_rect_height(&new->base.src) != drm_rect_height(&cur->base.src) ||
> +           drm_rect_width(&new->base.dst) != drm_rect_width(&cur->base.dst) ||
> +           drm_rect_height(&new->base.dst) != drm_rect_height(&cur->base.dst))
>                 return true;
>
>         return false;
> @@ -11843,10 +11843,10 @@ static bool intel_wm_need_update(struct drm_plane *plane,
>
>  static bool needs_scaling(struct intel_plane_state *state)
>  {
> -       int src_w = drm_rect_width(&state->src) >> 16;
> -       int src_h = drm_rect_height(&state->src) >> 16;
> -       int dst_w = drm_rect_width(&state->dst);
> -       int dst_h = drm_rect_height(&state->dst);
> +       int src_w = drm_rect_width(&state->base.src) >> 16;
> +       int src_h = drm_rect_height(&state->base.src) >> 16;
> +       int dst_w = drm_rect_width(&state->base.dst);
> +       int dst_h = drm_rect_height(&state->base.dst);
>
>         return (src_w != dst_w || src_h != dst_h);
>  }
> @@ -11877,8 +11877,8 @@ int intel_plane_atomic_calc_changes(struct drm_crtc_state *crtc_state,
>                         return ret;
>         }
>
> -       was_visible = old_plane_state->visible;
> -       visible = to_intel_plane_state(plane_state)->visible;
> +       was_visible = old_plane_state->base.visible;
> +       visible = to_intel_plane_state(plane_state)->base.visible;
>
>         if (!was_crtc_enabled && WARN_ON(was_visible))
>                 was_visible = false;
> @@ -11894,7 +11894,7 @@ int intel_plane_atomic_calc_changes(struct drm_crtc_state *crtc_state,
>          * only combine the results from all planes in the current place?
>          */
>         if (!is_crtc_enabled)
> -               to_intel_plane_state(plane_state)->visible = visible = false;
> +               to_intel_plane_state(plane_state)->base.visible = visible = false;
>
>         if (!was_visible && !visible)
>                 return 0;
> @@ -12299,12 +12299,13 @@ static void intel_dump_pipe_config(struct intel_crtc *crtc,
>                               drm_get_format_name(fb->pixel_format));
>                 DRM_DEBUG_KMS("\tscaler:%d src %dx%d+%d+%d dst %dx%d+%d+%d\n",
>                               state->scaler_id,
> -                             state->src.x1 >> 16, state->src.y1 >> 16,
> -                             drm_rect_width(&state->src) >> 16,
> -                             drm_rect_height(&state->src) >> 16,
> -                             state->dst.x1, state->dst.y1,
> -                             drm_rect_width(&state->dst),
> -                             drm_rect_height(&state->dst));
> +                             state->base.src.x1 >> 16,
> +                             state->base.src.y1 >> 16,
> +                             drm_rect_width(&state->base.src) >> 16,
> +                             drm_rect_height(&state->base.src) >> 16,
> +                             state->base.dst.x1, state->base.dst.y1,
> +                             drm_rect_width(&state->base.dst),
> +                             drm_rect_height(&state->base.dst));
>         }
>  }
>
> @@ -14139,12 +14140,14 @@ intel_check_primary_plane(struct drm_plane *plane,
>                 can_position = true;
>         }
>
> -       return drm_plane_helper_check_update(plane, crtc, fb, &state->src,
> -                                            &state->dst, &state->clip,
> +       return drm_plane_helper_check_update(plane, crtc, fb,
> +                                            &state->base.src,
> +                                            &state->base.dst,
> +                                            &state->base.clip,
>                                              state->base.rotation,
>                                              min_scale, max_scale,
>                                              can_position, true,
> -                                            &state->visible);
> +                                            &state->base.visible);
>  }
>
>  static void intel_begin_crtc_commit(struct drm_crtc *crtc,
> @@ -14331,12 +14334,13 @@ intel_check_cursor_plane(struct drm_plane *plane,
>         unsigned stride;
>         int ret;
>
> -       ret = drm_plane_helper_check_update(plane, crtc, fb, &state->src,
> -                                           &state->dst, &state->clip,
> +       ret = drm_plane_helper_check_update(plane, crtc, fb, &state->base.src,
> +                                           &state->base.dst,
> +                                           &state->base.clip,
>                                             state->base.rotation,
>                                             DRM_PLANE_HELPER_NO_SCALING,
>                                             DRM_PLANE_HELPER_NO_SCALING,
> -                                           true, true, &state->visible);
> +                                           true, true, &state->base.visible);
>         if (ret)
>                 return ret;
>
> @@ -14373,7 +14377,7 @@ intel_check_cursor_plane(struct drm_plane *plane,
>          * Refuse the put the cursor into that compromised position.
>          */
>         if (IS_CHERRYVIEW(plane->dev) && pipe == PIPE_C &&
> -           state->visible && state->base.crtc_x < 0) {
> +           state->base.visible && state->base.crtc_x < 0) {
>                 DRM_DEBUG_KMS("CHV cursor C not allowed to straddle the left screen edge\n");
>                 return -EINVAL;
>         }
> @@ -15822,7 +15826,7 @@ static void intel_sanitize_crtc(struct intel_crtc *crtc)
>                  * Temporarily change the plane mapping and disable everything
>                  * ...  */
>                 plane = crtc->plane;
> -               to_intel_plane_state(crtc->base.primary->state)->visible = true;
> +               to_intel_plane_state(crtc->base.primary->state)->base.visible = true;
>                 crtc->plane = !plane;
>                 intel_crtc_disable_noatomic(&crtc->base);
>                 crtc->plane = plane;
> @@ -15949,10 +15953,10 @@ static void readout_plane_state(struct intel_crtc *crtc)
>         struct intel_plane_state *plane_state =
>                 to_intel_plane_state(primary->state);
>
> -       plane_state->visible = crtc->active &&
> +       plane_state->base.visible = crtc->active &&
>                 primary_get_hw_state(to_intel_plane(primary));
>
> -       if (plane_state->visible)
> +       if (plane_state->base.visible)
>                 crtc->base.state->plane_mask |= 1 << drm_plane_index(primary);
>  }
>
> diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h
> index e74d851868c5..2f533aa0c3f3 100644
> --- a/drivers/gpu/drm/i915/intel_drv.h
> +++ b/drivers/gpu/drm/i915/intel_drv.h
> @@ -338,10 +338,7 @@ struct intel_atomic_state {
>
>  struct intel_plane_state {
>         struct drm_plane_state base;
> -       struct drm_rect src;
> -       struct drm_rect dst;
>         struct drm_rect clip;
> -       bool visible;
>
>         /*
>          * scaler_id
> diff --git a/drivers/gpu/drm/i915/intel_fbc.c b/drivers/gpu/drm/i915/intel_fbc.c
> index 781e2f5f7cd8..23d494b18459 100644
> --- a/drivers/gpu/drm/i915/intel_fbc.c
> +++ b/drivers/gpu/drm/i915/intel_fbc.c
> @@ -494,7 +494,7 @@ static bool multiple_pipes_ok(struct intel_crtc *crtc,
>         if (!no_fbc_on_multiple_pipes(dev_priv))
>                 return true;
>
> -       if (plane_state->visible)
> +       if (plane_state->base.visible)
>                 fbc->visible_pipes_mask |= (1 << pipe);
>         else
>                 fbc->visible_pipes_mask &= ~(1 << pipe);
> @@ -725,9 +725,9 @@ static void intel_fbc_update_state_cache(struct intel_crtc *crtc,
>                         ilk_pipe_pixel_rate(crtc_state);
>
>         cache->plane.rotation = plane_state->base.rotation;
> -       cache->plane.src_w = drm_rect_width(&plane_state->src) >> 16;
> -       cache->plane.src_h = drm_rect_height(&plane_state->src) >> 16;
> -       cache->plane.visible = plane_state->visible;
> +       cache->plane.src_w = drm_rect_width(&plane_state->base.src) >> 16;
> +       cache->plane.src_h = drm_rect_height(&plane_state->base.src) >> 16;
> +       cache->plane.visible = plane_state->base.visible;
>
>         if (!cache->plane.visible)
>                 return;
> @@ -1050,7 +1050,7 @@ void intel_fbc_choose_crtc(struct drm_i915_private *dev_priv,
>                 struct intel_plane_state *intel_plane_state =
>                         to_intel_plane_state(plane_state);
>
> -               if (!intel_plane_state->visible)
> +               if (!intel_plane_state->base.visible)
>                         continue;
>
>                 for_each_crtc_in_state(state, crtc, crtc_state, j) {
> @@ -1214,7 +1214,7 @@ void intel_fbc_init_pipe_state(struct drm_i915_private *dev_priv)
>
>         for_each_intel_crtc(&dev_priv->drm, crtc)
>                 if (intel_crtc_active(&crtc->base) &&
> -                   to_intel_plane_state(crtc->base.primary->state)->visible)
> +                   to_intel_plane_state(crtc->base.primary->state)->base.visible)
>                         dev_priv->fbc.visible_pipes_mask |= (1 << crtc->pipe);
>  }
>
> diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
> index 64d628c915a3..8584e8f78b2e 100644
> --- a/drivers/gpu/drm/i915/intel_pm.c
> +++ b/drivers/gpu/drm/i915/intel_pm.c
> @@ -960,7 +960,7 @@ static uint16_t vlv_compute_wm_level(struct intel_plane *plane,
>         if (dev_priv->wm.pri_latency[level] == 0)
>                 return USHRT_MAX;
>
> -       if (!state->visible)
> +       if (!state->base.visible)
>                 return 0;
>
>         cpp = drm_format_plane_cpp(state->base.fb->pixel_format, 0);
> @@ -1002,7 +1002,7 @@ static void vlv_compute_fifo(struct intel_crtc *crtc)
>                 if (plane->base.type == DRM_PLANE_TYPE_CURSOR)
>                         continue;
>
> -               if (state->visible) {
> +               if (state->base.visible) {
>                         wm_state->num_active_planes++;
>                         total_rate += drm_format_plane_cpp(state->base.fb->pixel_format, 0);
>                 }
> @@ -1018,7 +1018,7 @@ static void vlv_compute_fifo(struct intel_crtc *crtc)
>                         continue;
>                 }
>
> -               if (!state->visible) {
> +               if (!state->base.visible) {
>                         plane->wm.fifo_size = 0;
>                         continue;
>                 }
> @@ -1118,7 +1118,7 @@ static void vlv_compute_wm(struct intel_crtc *crtc)
>                 struct intel_plane_state *state =
>                         to_intel_plane_state(plane->base.state);
>
> -               if (!state->visible)
> +               if (!state->base.visible)
>                         continue;
>
>                 /* normal watermarks */
> @@ -1767,7 +1767,7 @@ static uint32_t ilk_compute_pri_wm(const struct intel_crtc_state *cstate,
>                 drm_format_plane_cpp(pstate->base.fb->pixel_format, 0) : 0;
>         uint32_t method1, method2;
>
> -       if (!cstate->base.active || !pstate->visible)
> +       if (!cstate->base.active || !pstate->base.visible)
>                 return 0;
>
>         method1 = ilk_wm_method1(ilk_pipe_pixel_rate(cstate), cpp, mem_value);
> @@ -1777,7 +1777,7 @@ static uint32_t ilk_compute_pri_wm(const struct intel_crtc_state *cstate,
>
>         method2 = ilk_wm_method2(ilk_pipe_pixel_rate(cstate),
>                                  cstate->base.adjusted_mode.crtc_htotal,
> -                                drm_rect_width(&pstate->dst),
> +                                drm_rect_width(&pstate->base.dst),
>                                  cpp, mem_value);
>
>         return min(method1, method2);
> @@ -1795,13 +1795,13 @@ static uint32_t ilk_compute_spr_wm(const struct intel_crtc_state *cstate,
>                 drm_format_plane_cpp(pstate->base.fb->pixel_format, 0) : 0;
>         uint32_t method1, method2;
>
> -       if (!cstate->base.active || !pstate->visible)
> +       if (!cstate->base.active || !pstate->base.visible)
>                 return 0;
>
>         method1 = ilk_wm_method1(ilk_pipe_pixel_rate(cstate), cpp, mem_value);
>         method2 = ilk_wm_method2(ilk_pipe_pixel_rate(cstate),
>                                  cstate->base.adjusted_mode.crtc_htotal,
> -                                drm_rect_width(&pstate->dst),
> +                                drm_rect_width(&pstate->base.dst),
>                                  cpp, mem_value);
>         return min(method1, method2);
>  }
> @@ -1820,7 +1820,7 @@ static uint32_t ilk_compute_cur_wm(const struct intel_crtc_state *cstate,
>          * this is necessary to avoid flickering.
>          */
>         int cpp = 4;
> -       int width = pstate->visible ? pstate->base.crtc_w : 64;
> +       int width = pstate->base.visible ? pstate->base.crtc_w : 64;
>
>         if (!cstate->base.active)
>                 return 0;
> @@ -1838,10 +1838,10 @@ static uint32_t ilk_compute_fbc_wm(const struct intel_crtc_state *cstate,
>         int cpp = pstate->base.fb ?
>                 drm_format_plane_cpp(pstate->base.fb->pixel_format, 0) : 0;
>
> -       if (!cstate->base.active || !pstate->visible)
> +       if (!cstate->base.active || !pstate->base.visible)
>                 return 0;
>
> -       return ilk_wm_fbc(pri_val, drm_rect_width(&pstate->dst), cpp);
> +       return ilk_wm_fbc(pri_val, drm_rect_width(&pstate->base.dst), cpp);
>  }
>
>  static unsigned int ilk_display_fifo_size(const struct drm_device *dev)
> @@ -2358,10 +2358,10 @@ static int ilk_compute_pipe_wm(struct intel_crtc_state *cstate)
>
>         pipe_wm->pipe_enabled = cstate->base.active;
>         if (sprstate) {
> -               pipe_wm->sprites_enabled = sprstate->visible;
> -               pipe_wm->sprites_scaled = sprstate->visible &&
> -                       (drm_rect_width(&sprstate->dst) != drm_rect_width(&sprstate->src) >> 16 ||
> -                        drm_rect_height(&sprstate->dst) != drm_rect_height(&sprstate->src) >> 16);
> +               pipe_wm->sprites_enabled = sprstate->base.visible;
> +               pipe_wm->sprites_scaled = sprstate->base.visible &&
> +                       (drm_rect_width(&sprstate->base.dst) != drm_rect_width(&sprstate->base.src) >> 16 ||
> +                        drm_rect_height(&sprstate->base.dst) != drm_rect_height(&sprstate->base.src) >> 16);
>         }
>
>         usable_level = max_level;
> @@ -2996,14 +2996,14 @@ skl_plane_downscale_amount(const struct intel_plane_state *pstate)
>         uint32_t downscale_h, downscale_w;
>         uint32_t src_w, src_h, dst_w, dst_h;
>
> -       if (WARN_ON(!pstate->visible))
> +       if (WARN_ON(!pstate->base.visible))
>                 return DRM_PLANE_HELPER_NO_SCALING;
>
>         /* n.b., src is 16.16 fixed point, dst is whole integer */
> -       src_w = drm_rect_width(&pstate->src);
> -       src_h = drm_rect_height(&pstate->src);
> -       dst_w = drm_rect_width(&pstate->dst);
> -       dst_h = drm_rect_height(&pstate->dst);
> +       src_w = drm_rect_width(&pstate->base.src);
> +       src_h = drm_rect_height(&pstate->base.src);
> +       dst_w = drm_rect_width(&pstate->base.dst);
> +       dst_h = drm_rect_height(&pstate->base.dst);
>         if (intel_rotation_90_or_270(pstate->base.rotation))
>                 swap(dst_w, dst_h);
>
> @@ -3025,15 +3025,15 @@ skl_plane_relative_data_rate(const struct intel_crtc_state *cstate,
>         uint32_t width = 0, height = 0;
>         unsigned format = fb ? fb->pixel_format : DRM_FORMAT_XRGB8888;
>
> -       if (!intel_pstate->visible)
> +       if (!intel_pstate->base.visible)
>                 return 0;
>         if (pstate->plane->type == DRM_PLANE_TYPE_CURSOR)
>                 return 0;
>         if (y && format != DRM_FORMAT_NV12)
>                 return 0;
>
> -       width = drm_rect_width(&intel_pstate->src) >> 16;
> -       height = drm_rect_height(&intel_pstate->src) >> 16;
> +       width = drm_rect_width(&intel_pstate->base.src) >> 16;
> +       height = drm_rect_height(&intel_pstate->base.src) >> 16;
>
>         if (intel_rotation_90_or_270(pstate->rotation))
>                 swap(width, height);
> @@ -3134,8 +3134,8 @@ skl_ddb_min_alloc(const struct drm_plane_state *pstate,
>             fb->modifier[0] != I915_FORMAT_MOD_Yf_TILED)
>                 return 8;
>
> -       src_w = drm_rect_width(&intel_pstate->src) >> 16;
> -       src_h = drm_rect_height(&intel_pstate->src) >> 16;
> +       src_w = drm_rect_width(&intel_pstate->base.src) >> 16;
> +       src_h = drm_rect_height(&intel_pstate->base.src) >> 16;
>
>         if (intel_rotation_90_or_270(pstate->rotation))
>                 swap(src_w, src_h);
> @@ -3226,7 +3226,7 @@ skl_allocate_pipe_ddb(struct intel_crtc_state *cstate,
>                 if (intel_plane->pipe != pipe)
>                         continue;
>
> -               if (!to_intel_plane_state(pstate)->visible) {
> +               if (!to_intel_plane_state(pstate)->base.visible) {
>                         minimum[id] = 0;
>                         y_minimum[id] = 0;
>                         continue;
> @@ -3363,7 +3363,7 @@ static uint32_t skl_adjusted_plane_pixel_rate(const struct intel_crtc_state *cst
>         uint64_t pixel_rate;
>
>         /* Shouldn't reach here on disabled planes... */
> -       if (WARN_ON(!pstate->visible))
> +       if (WARN_ON(!pstate->base.visible))
>                 return 0;
>
>         /*
> @@ -3399,13 +3399,13 @@ static int skl_compute_plane_wm(const struct drm_i915_private *dev_priv,
>         uint32_t width = 0, height = 0;
>         uint32_t plane_pixel_rate;
>
> -       if (latency == 0 || !cstate->base.active || !intel_pstate->visible) {
> +       if (latency == 0 || !cstate->base.active || !intel_pstate->base.visible) {
>                 *enabled = false;
>                 return 0;
>         }
>
> -       width = drm_rect_width(&intel_pstate->src) >> 16;
> -       height = drm_rect_height(&intel_pstate->src) >> 16;
> +       width = drm_rect_width(&intel_pstate->base.src) >> 16;
> +       height = drm_rect_height(&intel_pstate->base.src) >> 16;
>
>         if (intel_rotation_90_or_270(pstate->rotation))
>                 swap(width, height);
> diff --git a/drivers/gpu/drm/i915/intel_sprite.c b/drivers/gpu/drm/i915/intel_sprite.c
> index 0de935ad01c2..10f10915c0bc 100644
> --- a/drivers/gpu/drm/i915/intel_sprite.c
> +++ b/drivers/gpu/drm/i915/intel_sprite.c
> @@ -211,14 +211,14 @@ skl_update_plane(struct drm_plane *drm_plane,
>         u32 tile_height, plane_offset, plane_size;
>         unsigned int rotation = plane_state->base.rotation;
>         int x_offset, y_offset;
> -       int crtc_x = plane_state->dst.x1;
> -       int crtc_y = plane_state->dst.y1;
> -       uint32_t crtc_w = drm_rect_width(&plane_state->dst);
> -       uint32_t crtc_h = drm_rect_height(&plane_state->dst);
> -       uint32_t x = plane_state->src.x1 >> 16;
> -       uint32_t y = plane_state->src.y1 >> 16;
> -       uint32_t src_w = drm_rect_width(&plane_state->src) >> 16;
> -       uint32_t src_h = drm_rect_height(&plane_state->src) >> 16;
> +       int crtc_x = plane_state->base.dst.x1;
> +       int crtc_y = plane_state->base.dst.y1;
> +       uint32_t crtc_w = drm_rect_width(&plane_state->base.dst);
> +       uint32_t crtc_h = drm_rect_height(&plane_state->base.dst);
> +       uint32_t x = plane_state->base.src.x1 >> 16;
> +       uint32_t y = plane_state->base.src.y1 >> 16;
> +       uint32_t src_w = drm_rect_width(&plane_state->base.src) >> 16;
> +       uint32_t src_h = drm_rect_height(&plane_state->base.src) >> 16;
>
>         plane_ctl = PLANE_CTL_ENABLE |
>                 PLANE_CTL_PIPE_GAMMA_ENABLE |
> @@ -370,14 +370,14 @@ vlv_update_plane(struct drm_plane *dplane,
>         unsigned int rotation = dplane->state->rotation;
>         int cpp = drm_format_plane_cpp(fb->pixel_format, 0);
>         const struct drm_intel_sprite_colorkey *key = &plane_state->ckey;
> -       int crtc_x = plane_state->dst.x1;
> -       int crtc_y = plane_state->dst.y1;
> -       uint32_t crtc_w = drm_rect_width(&plane_state->dst);
> -       uint32_t crtc_h = drm_rect_height(&plane_state->dst);
> -       uint32_t x = plane_state->src.x1 >> 16;
> -       uint32_t y = plane_state->src.y1 >> 16;
> -       uint32_t src_w = drm_rect_width(&plane_state->src) >> 16;
> -       uint32_t src_h = drm_rect_height(&plane_state->src) >> 16;
> +       int crtc_x = plane_state->base.dst.x1;
> +       int crtc_y = plane_state->base.dst.y1;
> +       uint32_t crtc_w = drm_rect_width(&plane_state->base.dst);
> +       uint32_t crtc_h = drm_rect_height(&plane_state->base.dst);
> +       uint32_t x = plane_state->base.src.x1 >> 16;
> +       uint32_t y = plane_state->base.src.y1 >> 16;
> +       uint32_t src_w = drm_rect_width(&plane_state->base.src) >> 16;
> +       uint32_t src_h = drm_rect_height(&plane_state->base.src) >> 16;
>
>         sprctl = SP_ENABLE;
>
> @@ -512,14 +512,14 @@ ivb_update_plane(struct drm_plane *plane,
>         unsigned int rotation = plane_state->base.rotation;
>         int cpp = drm_format_plane_cpp(fb->pixel_format, 0);
>         const struct drm_intel_sprite_colorkey *key = &plane_state->ckey;
> -       int crtc_x = plane_state->dst.x1;
> -       int crtc_y = plane_state->dst.y1;
> -       uint32_t crtc_w = drm_rect_width(&plane_state->dst);
> -       uint32_t crtc_h = drm_rect_height(&plane_state->dst);
> -       uint32_t x = plane_state->src.x1 >> 16;
> -       uint32_t y = plane_state->src.y1 >> 16;
> -       uint32_t src_w = drm_rect_width(&plane_state->src) >> 16;
> -       uint32_t src_h = drm_rect_height(&plane_state->src) >> 16;
> +       int crtc_x = plane_state->base.dst.x1;
> +       int crtc_y = plane_state->base.dst.y1;
> +       uint32_t crtc_w = drm_rect_width(&plane_state->base.dst);
> +       uint32_t crtc_h = drm_rect_height(&plane_state->base.dst);
> +       uint32_t x = plane_state->base.src.x1 >> 16;
> +       uint32_t y = plane_state->base.src.y1 >> 16;
> +       uint32_t src_w = drm_rect_width(&plane_state->base.src) >> 16;
> +       uint32_t src_h = drm_rect_height(&plane_state->base.src) >> 16;
>
>         sprctl = SPRITE_ENABLE;
>
> @@ -653,14 +653,14 @@ ilk_update_plane(struct drm_plane *plane,
>         unsigned int rotation = plane_state->base.rotation;
>         int cpp = drm_format_plane_cpp(fb->pixel_format, 0);
>         const struct drm_intel_sprite_colorkey *key = &plane_state->ckey;
> -       int crtc_x = plane_state->dst.x1;
> -       int crtc_y = plane_state->dst.y1;
> -       uint32_t crtc_w = drm_rect_width(&plane_state->dst);
> -       uint32_t crtc_h = drm_rect_height(&plane_state->dst);
> -       uint32_t x = plane_state->src.x1 >> 16;
> -       uint32_t y = plane_state->src.y1 >> 16;
> -       uint32_t src_w = drm_rect_width(&plane_state->src) >> 16;
> -       uint32_t src_h = drm_rect_height(&plane_state->src) >> 16;
> +       int crtc_x = plane_state->base.dst.x1;
> +       int crtc_y = plane_state->base.dst.y1;
> +       uint32_t crtc_w = drm_rect_width(&plane_state->base.dst);
> +       uint32_t crtc_h = drm_rect_height(&plane_state->base.dst);
> +       uint32_t x = plane_state->base.src.x1 >> 16;
> +       uint32_t y = plane_state->base.src.y1 >> 16;
> +       uint32_t src_w = drm_rect_width(&plane_state->base.src) >> 16;
> +       uint32_t src_h = drm_rect_height(&plane_state->base.src) >> 16;
>
>         dvscntr = DVS_ENABLE;
>
> @@ -778,15 +778,15 @@ intel_check_sprite_plane(struct drm_plane *plane,
>         int crtc_x, crtc_y;
>         unsigned int crtc_w, crtc_h;
>         uint32_t src_x, src_y, src_w, src_h;
> -       struct drm_rect *src = &state->src;
> -       struct drm_rect *dst = &state->dst;
> +       struct drm_rect *src = &state->base.src;
> +       struct drm_rect *dst = &state->base.dst;
>         const struct drm_rect *clip = &state->clip;
>         int hscale, vscale;
>         int max_scale, min_scale;
>         bool can_scale;
>
>         if (!fb) {
> -               state->visible = false;
> +               state->base.visible = false;
>                 return 0;
>         }
>
> @@ -834,14 +834,14 @@ intel_check_sprite_plane(struct drm_plane *plane,
>         vscale = drm_rect_calc_vscale_relaxed(src, dst, min_scale, max_scale);
>         BUG_ON(vscale < 0);
>
> -       state->visible = drm_rect_clip_scaled(src, dst, clip, hscale, vscale);
> +       state->base.visible = drm_rect_clip_scaled(src, dst, clip, hscale, vscale);
>
>         crtc_x = dst->x1;
>         crtc_y = dst->y1;
>         crtc_w = drm_rect_width(dst);
>         crtc_h = drm_rect_height(dst);
>
> -       if (state->visible) {
> +       if (state->base.visible) {
>                 /* check again in case clipping clamped the results */
>                 hscale = drm_rect_calc_hscale(src, dst, min_scale, max_scale);
>                 if (hscale < 0) {
> @@ -898,12 +898,12 @@ intel_check_sprite_plane(struct drm_plane *plane,
>                                 crtc_w &= ~1;
>
>                         if (crtc_w == 0)
> -                               state->visible = false;
> +                               state->base.visible = false;
>                 }
>         }
>
>         /* Check size restrictions when scaling */
> -       if (state->visible && (src_w != crtc_w || src_h != crtc_h)) {
> +       if (state->base.visible && (src_w != crtc_w || src_h != crtc_h)) {
>                 unsigned int width_bytes;
>                 int cpp = drm_format_plane_cpp(fb->pixel_format, 0);
>
> @@ -912,10 +912,10 @@ intel_check_sprite_plane(struct drm_plane *plane,
>                 /* FIXME interlacing min height is 6 */
>
>                 if (crtc_w < 3 || crtc_h < 3)
> -                       state->visible = false;
> +                       state->base.visible = false;
>
>                 if (src_w < 3 || src_h < 3)
> -                       state->visible = false;
> +                       state->base.visible = false;
>
>                 width_bytes = ((src_x * cpp) & 63) + src_w * cpp;
>
> @@ -926,7 +926,7 @@ intel_check_sprite_plane(struct drm_plane *plane,
>                 }
>         }
>
> -       if (state->visible) {
> +       if (state->base.visible) {
>                 src->x1 = src_x << 16;
>                 src->x2 = (src_x + src_w) << 16;
>                 src->y1 = src_y << 16;
> --
> 2.7.4
>
> _______________________________________________
> dri-devel mailing list
> dri-devel at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel


More information about the Intel-gfx mailing list