On Wed, Oct 14, 2015 at 07:29:01PM +0300, [email protected] wrote:
> From: Ville Syrjälä <[email protected]>
> 
> Pull the code to determine the surface alignment for both linear and
> tiled surfaces into a separate function intel_surf_alignment(). This
> will be used not only for the vma alignment but actually aligning
> the plane SURF once SKL+ starts using intel_compute_page_offset()
> (since SKL+ needs >4K alignment for tiled surfaces too).
> 
> Signed-off-by: Ville Syrjälä <[email protected]>

Reviewed-by: Daniel Vetter <[email protected]>

> ---
>  drivers/gpu/drm/i915/intel_display.c | 45 
> +++++++++++++++++-------------------
>  1 file changed, 21 insertions(+), 24 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/intel_display.c 
> b/drivers/gpu/drm/i915/intel_display.c
> index bd55d06..5f3abce 100644
> --- a/drivers/gpu/drm/i915/intel_display.c
> +++ b/drivers/gpu/drm/i915/intel_display.c
> @@ -2321,7 +2321,7 @@ intel_fill_fb_ggtt_view(struct i915_ggtt_view *view, 
> struct drm_framebuffer *fb,
>       return 0;
>  }
>  
> -static unsigned int intel_linear_alignment(struct drm_i915_private *dev_priv)
> +static unsigned int intel_linear_alignment(const struct drm_i915_private 
> *dev_priv)
>  {
>       if (INTEL_INFO(dev_priv)->gen >= 9)
>               return 256 * 1024;
> @@ -2334,6 +2334,25 @@ static unsigned int intel_linear_alignment(struct 
> drm_i915_private *dev_priv)
>               return 0;
>  }
>  
> +static unsigned int intel_surf_alignment(const struct drm_i915_private 
> *dev_priv,
> +                                      uint64_t fb_modifier)
> +{
> +     switch (fb_modifier) {
> +     case DRM_FORMAT_MOD_NONE:
> +             return intel_linear_alignment(dev_priv);
> +     case I915_FORMAT_MOD_X_TILED:
> +             if (INTEL_INFO(dev_priv)->gen >= 9)
> +                     return 256 * 1024;
> +             return 0;
> +     case I915_FORMAT_MOD_Y_TILED:
> +     case I915_FORMAT_MOD_Yf_TILED:
> +             return 1 * 1024 * 1024;
> +     default:
> +             MISSING_CASE(fb_modifier);
> +             return 0;
> +     }
> +}
> +
>  int
>  intel_pin_and_fence_fb_obj(struct drm_plane *plane,
>                          struct drm_framebuffer *fb,
> @@ -2350,29 +2369,7 @@ intel_pin_and_fence_fb_obj(struct drm_plane *plane,
>  
>       WARN_ON(!mutex_is_locked(&dev->struct_mutex));
>  
> -     switch (fb->modifier[0]) {
> -     case DRM_FORMAT_MOD_NONE:
> -             alignment = intel_linear_alignment(dev_priv);
> -             break;
> -     case I915_FORMAT_MOD_X_TILED:
> -             if (INTEL_INFO(dev)->gen >= 9)
> -                     alignment = 256 * 1024;
> -             else {
> -                     /* pin() will align the object as required by fence */
> -                     alignment = 0;
> -             }
> -             break;
> -     case I915_FORMAT_MOD_Y_TILED:
> -     case I915_FORMAT_MOD_Yf_TILED:
> -             if (WARN_ONCE(INTEL_INFO(dev)->gen < 9,
> -                       "Y tiling bo slipped through, driver bug!\n"))
> -                     return -EINVAL;
> -             alignment = 1 * 1024 * 1024;
> -             break;
> -     default:
> -             MISSING_CASE(fb->modifier[0]);
> -             return -EINVAL;
> -     }
> +     alignment = intel_surf_alignment(dev_priv, fb->modifier[0]);
>  
>       ret = intel_fill_fb_ggtt_view(&view, fb, plane_state);
>       if (ret)
> -- 
> 2.4.9
> 
> _______________________________________________
> Intel-gfx mailing list
> [email protected]
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx

-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
_______________________________________________
Intel-gfx mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to