[Intel-gfx] [PATCH 09/21] drm/i915: Embed rotation_info under intel_framebuffer
Ville Syrjälä
ville.syrjala at linux.intel.com
Tue Mar 1 11:00:17 UTC 2016
On Mon, Feb 15, 2016 at 10:54:47PM +0200, ville.syrjala at linux.intel.com wrote:
> From: Ville Syrjälä <ville.syrjala at linux.intel.com>
>
> Instead of repopulatin the rotation_info struct for the fb every time
> we try to use the fb, we can just populate it once when creating the fb,
> and later we can just copy the pre-populate struct into the gtt_view.
>
> Signed-off-by: Ville Syrjälä <ville.syrjala at linux.intel.com>
> Reviewed-by: Daniel Vetter <daniel.vetter at ffwll.ch>
Merged up to here. Thanks for the reviews.
> ---
> drivers/gpu/drm/i915/intel_display.c | 27 ++++++++++++++++-----------
> drivers/gpu/drm/i915/intel_drv.h | 1 +
> 2 files changed, 17 insertions(+), 11 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
> index 74252433b1ec..fddfc5875752 100644
> --- a/drivers/gpu/drm/i915/intel_display.c
> +++ b/drivers/gpu/drm/i915/intel_display.c
> @@ -2309,18 +2309,20 @@ intel_fill_fb_ggtt_view(struct i915_ggtt_view *view,
> const struct drm_framebuffer *fb,
> unsigned int rotation)
> {
> - struct drm_i915_private *dev_priv = to_i915(fb->dev);
> - struct intel_rotation_info *info = &view->params.rotated;
> - unsigned int tile_size, tile_width, tile_height, cpp;
> -
> - *view = i915_ggtt_view_normal;
> -
> - if (!intel_rotation_90_or_270(rotation))
> - return;
> -
> - *view = i915_ggtt_view_rotated;
> + if (intel_rotation_90_or_270(rotation)) {
> + *view = i915_ggtt_view_rotated;
> + view->params.rotated = to_intel_framebuffer(fb)->rot_info;
> + } else {
> + *view = i915_ggtt_view_normal;
> + }
> +}
>
> - info->uv_offset = fb->offsets[1];
> +static void
> +intel_fill_fb_info(struct drm_i915_private *dev_priv,
> + struct drm_framebuffer *fb)
> +{
> + struct intel_rotation_info *info = &to_intel_framebuffer(fb)->rot_info;
> + unsigned int tile_size, tile_width, tile_height, cpp;
>
> tile_size = intel_tile_size(dev_priv);
>
> @@ -2336,6 +2338,7 @@ intel_fill_fb_ggtt_view(struct i915_ggtt_view *view,
> intel_tile_dims(dev_priv, &tile_width, &tile_height,
> fb->modifier[1], cpp);
>
> + info->uv_offset = fb->offsets[1];
> info->plane[1].width = DIV_ROUND_UP(fb->pitches[1], tile_width * cpp);
> info->plane[1].height = DIV_ROUND_UP(fb->height / 2, tile_height);
> }
> @@ -14891,6 +14894,8 @@ static int intel_framebuffer_init(struct drm_device *dev,
> drm_helper_mode_fill_fb_struct(&intel_fb->base, mode_cmd);
> intel_fb->obj = obj;
>
> + intel_fill_fb_info(dev_priv, &intel_fb->base);
> +
> ret = drm_framebuffer_init(dev, &intel_fb->base, &intel_fb_funcs);
> if (ret) {
> DRM_ERROR("framebuffer init failed %d\n", ret);
> diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h
> index 59bed59388ad..674afa1f9f97 100644
> --- a/drivers/gpu/drm/i915/intel_drv.h
> +++ b/drivers/gpu/drm/i915/intel_drv.h
> @@ -118,6 +118,7 @@ enum intel_output_type {
> struct intel_framebuffer {
> struct drm_framebuffer base;
> struct drm_i915_gem_object *obj;
> + struct intel_rotation_info rot_info;
> };
>
> struct intel_fbdev {
> --
> 2.4.10
--
Ville Syrjälä
Intel OTC
More information about the Intel-gfx
mailing list