All of lore.kernel.org
 help / color / mirror / Atom feed
From: Daniel Vetter <daniel@ffwll.ch>
To: ville.syrjala@linux.intel.com
Cc: intel-gfx@lists.freedesktop.org
Subject: Re: [PATCH 11/22] drm/i915: Don't pass plane+plane_state to intel_pin_and_fence_fb_obj()
Date: Wed, 21 Oct 2015 13:28:17 +0200	[thread overview]
Message-ID: <20151021112817.GC13786@phenom.ffwll.local> (raw)
In-Reply-To: <1444840154-7804-12-git-send-email-ville.syrjala@linux.intel.com>

On Wed, Oct 14, 2015 at 07:29:03PM +0300, ville.syrjala@linux.intel.com wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
> 
> intel_pin_and_fence_fb_obj() only needs the framebuffer, and the desird
> rotation (to find the right GTT view for it), so no need to pass all
> kinds of plane stuff.
> 
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>

Feels indeed a bit like a bikeshed and just churn without resolving the
"pass vma in plane_state around" idea for real. But meh, it's imo not
worse than the existing code, and looks correct. Less churn would make me
a happier reviewer thought (there's a pile of whitespace in here too).

Grumpily-Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>

> ---
>  drivers/gpu/drm/i915/intel_display.c | 39 ++++++++++++++++--------------------
>  drivers/gpu/drm/i915/intel_drv.h     |  5 ++---
>  drivers/gpu/drm/i915/intel_fbdev.c   |  2 +-
>  3 files changed, 20 insertions(+), 26 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
> index 85e1473..80e9f2e 100644
> --- a/drivers/gpu/drm/i915/intel_display.c
> +++ b/drivers/gpu/drm/i915/intel_display.c
> @@ -2275,8 +2275,9 @@ intel_fb_align_height(struct drm_device *dev, unsigned int height,
>  }
>  
>  static int
> -intel_fill_fb_ggtt_view(struct i915_ggtt_view *view, struct drm_framebuffer *fb,
> -			const struct drm_plane_state *plane_state)
> +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->rotation_info;
> @@ -2284,10 +2285,7 @@ intel_fill_fb_ggtt_view(struct i915_ggtt_view *view, struct drm_framebuffer *fb,
>  
>  	*view = i915_ggtt_view_normal;
>  
> -	if (!plane_state)
> -		return 0;
> -
> -	if (!intel_rotation_90_or_270(plane_state->rotation))
> +	if (!intel_rotation_90_or_270(rotation))
>  		return 0;
>  
>  	*view = i915_ggtt_view_rotated;
> @@ -2354,9 +2352,8 @@ static unsigned int intel_surf_alignment(const struct drm_i915_private *dev_priv
>  }
>  
>  int
> -intel_pin_and_fence_fb_obj(struct drm_plane *plane,
> -			   struct drm_framebuffer *fb,
> -			   const struct drm_plane_state *plane_state,
> +intel_pin_and_fence_fb_obj(struct drm_framebuffer *fb,
> +			   unsigned int rotation,
>  			   struct intel_engine_cs *pipelined,
>  			   struct drm_i915_gem_request **pipelined_request)
>  {
> @@ -2371,7 +2368,7 @@ intel_pin_and_fence_fb_obj(struct drm_plane *plane,
>  
>  	alignment = intel_surf_alignment(dev_priv, fb->modifier[0]);
>  
> -	ret = intel_fill_fb_ggtt_view(&view, fb, plane_state);
> +	ret = intel_fill_fb_ggtt_view(&view, fb, rotation);
>  	if (ret)
>  		return ret;
>  
> @@ -2432,8 +2429,7 @@ err_interruptible:
>  	return ret;
>  }
>  
> -static void intel_unpin_fb_obj(struct drm_framebuffer *fb,
> -			       const struct drm_plane_state *plane_state)
> +static void intel_unpin_fb_obj(struct drm_framebuffer *fb, unsigned int rotation)
>  {
>  	struct drm_i915_gem_object *obj = intel_fb_obj(fb);
>  	struct i915_ggtt_view view;
> @@ -2441,7 +2437,7 @@ static void intel_unpin_fb_obj(struct drm_framebuffer *fb,
>  
>  	WARN_ON(!mutex_is_locked(&obj->base.dev->struct_mutex));
>  
> -	ret = intel_fill_fb_ggtt_view(&view, fb, plane_state);
> +	ret = intel_fill_fb_ggtt_view(&view, fb, rotation);
>  	WARN_ONCE(ret, "Couldn't get view from plane state!");
>  
>  	i915_gem_object_unpin_fence(obj);
> @@ -10780,7 +10776,7 @@ static void intel_unpin_work_fn(struct work_struct *__work)
>  	struct drm_plane *primary = crtc->base.primary;
>  
>  	mutex_lock(&dev->struct_mutex);
> -	intel_unpin_fb_obj(work->old_fb, primary->state);
> +	intel_unpin_fb_obj(work->old_fb, primary->state->rotation);
>  	drm_gem_object_unreference(&work->pending_flip_obj->base);
>  
>  	if (work->flip_queued_req)
> @@ -11521,8 +11517,7 @@ static int intel_crtc_page_flip(struct drm_crtc *crtc,
>  	 * synchronisation, so all we want here is to pin the framebuffer
>  	 * into the display plane and skip any waits.
>  	 */
> -	ret = intel_pin_and_fence_fb_obj(crtc->primary, fb,
> -					 crtc->primary->state,
> +	ret = intel_pin_and_fence_fb_obj(fb, primary->state->rotation,
>  					 mmio_flip ? i915_gem_request_get_ring(obj->last_write_req) : ring, &request);
>  	if (ret)
>  		goto cleanup_pending;
> @@ -11573,7 +11568,7 @@ static int intel_crtc_page_flip(struct drm_crtc *crtc,
>  	return 0;
>  
>  cleanup_unpin:
> -	intel_unpin_fb_obj(fb, crtc->primary->state);
> +	intel_unpin_fb_obj(fb, crtc->primary->state->rotation);
>  cleanup_pending:
>  	if (request)
>  		i915_gem_request_cancel(request);
> @@ -13457,7 +13452,8 @@ intel_prepare_plane_fb(struct drm_plane *plane,
>  		if (ret)
>  			DRM_DEBUG_KMS("failed to attach phys object\n");
>  	} else {
> -		ret = intel_pin_and_fence_fb_obj(plane, fb, new_state, NULL, NULL);
> +		ret = intel_pin_and_fence_fb_obj(fb, new_state->rotation,
> +						 NULL, NULL);
>  	}
>  
>  	if (ret == 0)
> @@ -13488,7 +13484,7 @@ intel_cleanup_plane_fb(struct drm_plane *plane,
>  	if (plane->type != DRM_PLANE_TYPE_CURSOR ||
>  	    !INTEL_INFO(dev)->cursor_needs_physical) {
>  		mutex_lock(&dev->struct_mutex);
> -		intel_unpin_fb_obj(old_state->fb, old_state);
> +		intel_unpin_fb_obj(old_state->fb, old_state->rotation);
>  		mutex_unlock(&dev->struct_mutex);
>  	}
>  }
> @@ -15474,9 +15470,8 @@ void intel_modeset_gem_init(struct drm_device *dev)
>  			continue;
>  
>  		mutex_lock(&dev->struct_mutex);
> -		ret = intel_pin_and_fence_fb_obj(c->primary,
> -						 c->primary->fb,
> -						 c->primary->state,
> +		ret = intel_pin_and_fence_fb_obj(c->primary->fb,
> +						 c->primary->state->rotation,
>  						 NULL, NULL);
>  		mutex_unlock(&dev->struct_mutex);
>  		if (ret) {
> diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h
> index ed47ca3..b0d92e0 100644
> --- a/drivers/gpu/drm/i915/intel_drv.h
> +++ b/drivers/gpu/drm/i915/intel_drv.h
> @@ -1067,9 +1067,8 @@ bool intel_get_load_detect_pipe(struct drm_connector *connector,
>  void intel_release_load_detect_pipe(struct drm_connector *connector,
>  				    struct intel_load_detect_pipe *old,
>  				    struct drm_modeset_acquire_ctx *ctx);
> -int intel_pin_and_fence_fb_obj(struct drm_plane *plane,
> -			       struct drm_framebuffer *fb,
> -			       const struct drm_plane_state *plane_state,
> +int intel_pin_and_fence_fb_obj(struct drm_framebuffer *fb,
> +			       unsigned int rotation,
>  			       struct intel_engine_cs *pipelined,
>  			       struct drm_i915_gem_request **pipelined_request);
>  struct drm_framebuffer *
> diff --git a/drivers/gpu/drm/i915/intel_fbdev.c b/drivers/gpu/drm/i915/intel_fbdev.c
> index 4fd5fdf..6bef820 100644
> --- a/drivers/gpu/drm/i915/intel_fbdev.c
> +++ b/drivers/gpu/drm/i915/intel_fbdev.c
> @@ -161,7 +161,7 @@ static int intelfb_alloc(struct drm_fb_helper *helper,
>  	}
>  
>  	/* Flush everything out, we'll be doing GTT only from now on */
> -	ret = intel_pin_and_fence_fb_obj(NULL, fb, NULL, NULL, NULL);
> +	ret = intel_pin_and_fence_fb_obj(fb, BIT(DRM_ROTATE_0), NULL, NULL);
>  	if (ret) {
>  		DRM_ERROR("failed to pin obj: %d\n", ret);
>  		goto out_fb;
> -- 
> 2.4.9
> 
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx

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

  parent reply	other threads:[~2015-10-21 11:28 UTC|newest]

Thread overview: 76+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-10-14 16:28 [PATCH 00/22] drm/i915: Handle fb->offsets[] and rewrite fb rotation handling to be more generic ville.syrjala
2015-10-14 16:28 ` [PATCH 01/22] drm: Add drm_format_plane_width() and drm_format_plane_height() ville.syrjala
2015-10-21  9:53   ` Daniel Vetter
2015-10-14 16:28 ` [PATCH 02/22] drm/i915: Pass modifier instead of tiling_mode to gen4_compute_page_offset() ville.syrjala
2015-10-21  9:54   ` Daniel Vetter
2015-10-14 16:28 ` [PATCH 03/22] drm/i915: Factor out intel_tile_width() ville.syrjala
2015-10-21 10:15   ` Daniel Vetter
2015-10-21 12:09     ` Ville Syrjälä
2015-10-21 12:16       ` Daniel Vetter
2015-10-14 16:28 ` [PATCH 04/22] drm/i915: Redo intel_tile_height() as intel_tile_size() / intel_tile_width() ville.syrjala
2015-10-21 10:21   ` Daniel Vetter
2015-10-14 16:28 ` [PATCH 05/22] drm/i915: change intel_fill_fb_ggtt_view() to use the real tile size ville.syrjala
2015-10-21 10:22   ` Daniel Vetter
2015-10-14 16:28 ` [PATCH 06/22] drm/i915: Use intel_tile_{size, width, height}() in intel_gen4_compute_page_offset() ville.syrjala
2015-10-21 10:24   ` Daniel Vetter
2015-10-14 16:28 ` [PATCH 07/22] drm/i915: s/intel_gen4_compute_page_offset/intel_compute_page_offset/ ville.syrjala
2015-10-21 10:45   ` Daniel Vetter
2015-10-14 16:29 ` [PATCH 08/22] drm/i915: Pass 90/270 vs. 0/180 rotation info for intel_gen4_compute_page_offset() ville.syrjala
2015-10-21 10:53   ` Daniel Vetter
2015-10-21 11:36     ` Ville Syrjälä
2015-10-21 12:11       ` Daniel Vetter
2015-10-14 16:29 ` [PATCH 09/22] drm/i915: Refactor intel_surf_alignment() ville.syrjala
2015-10-21 10:54   ` Daniel Vetter
2015-10-14 16:29 ` [PATCH 10/22] drm/i915: Support for extra alignment for tiled surfaces ville.syrjala
2015-10-21 11:22   ` Daniel Vetter
2015-10-21 11:32     ` Daniel Vetter
2015-10-21 11:39     ` Ville Syrjälä
2015-10-14 16:29 ` [PATCH 11/22] drm/i915: Don't pass plane+plane_state to intel_pin_and_fence_fb_obj() ville.syrjala
2015-10-15  9:08   ` Chris Wilson
2015-10-15  9:36     ` Ville Syrjälä
2015-10-15 10:05       ` Daniel Vetter
2015-10-15 10:47         ` [PATCH] drm/i915: Split out aliasing-ppgtt from ggtt_bind_vma() Chris Wilson
2015-10-15 11:10   ` [PATCH 11/22] drm/i915: Don't pass plane+plane_state to intel_pin_and_fence_fb_obj() Tvrtko Ursulin
2015-10-15 11:17     ` Ville Syrjälä
2015-10-15 11:30       ` Tvrtko Ursulin
2015-10-15 12:11         ` Ville Syrjälä
2015-10-21 11:28   ` Daniel Vetter [this message]
2015-10-21 12:17     ` Tvrtko Ursulin
2015-10-21 13:09       ` Ville Syrjälä
2015-10-21 13:22         ` Tvrtko Ursulin
2015-10-21 14:22           ` Ville Syrjälä
2015-10-21 15:20             ` Daniel Vetter
2015-10-21 15:42               ` Ville Syrjälä
2015-10-14 16:29 ` [PATCH 12/22] drm/i915: Set i915_ggtt_view_normal type explicitly ville.syrjala
2015-10-15 11:15   ` Tvrtko Ursulin
2015-10-15 12:01     ` Daniel Vetter
2015-10-21 11:28       ` Daniel Vetter
2015-10-14 16:29 ` [PATCH 13/22] drm/i915: Move the partial and rotated view data into the same union ville.syrjala
2015-10-21 11:30   ` Daniel Vetter
2015-10-14 16:29 ` [PATCH 14/22] drm/i915: Don't treat differently sized rotated views as equal ville.syrjala
2015-10-15 11:18   ` Tvrtko Ursulin
2015-10-15 12:02     ` Daniel Vetter
2015-10-15 12:06       ` Ville Syrjälä
2015-10-15 12:24         ` Daniel Vetter
2015-10-21 13:06           ` Ville Syrjälä
2015-10-21 11:36   ` Daniel Vetter
2015-10-14 16:29 ` [PATCH 15/22] drm/i915: Pass the dma_addr_t array as const to rotate_pages() ville.syrjala
2015-10-21 11:36   ` Daniel Vetter
2015-10-14 16:29 ` [PATCH 16/22] drm/i915: Pass stride " ville.syrjala
2015-10-14 16:29 ` [PATCH 17/22] drm/i915: Pass rotation_info to intel_rotate_fb_obj_pages() ville.syrjala
2015-10-14 16:29 ` [PATCH 18/22] drm/i915: Make sure fb offset is (macro)pixel aligned ville.syrjala
2015-10-14 16:43   ` Daniel Vetter
2015-10-21 11:41   ` Daniel Vetter
2015-10-14 16:29 ` [PATCH 19/22] drm/i915: Don't leak framebuffer_references if drm_framebuffer_init() fails ville.syrjala
2015-10-21 11:42   ` Daniel Vetter
2015-10-14 16:29 ` [PATCH 20/22] drm/i915: Pass drm_frambuffer to intel_compute_page_offset() ville.syrjala
2015-10-21 11:43   ` Daniel Vetter
2015-10-14 16:29 ` [PATCH 21/22] drm/i915: Rewrite fb rotation GTT handling ville.syrjala
2015-10-15 17:59   ` [PATCH v2 " ville.syrjala
2015-10-21 12:01     ` Daniel Vetter
2015-10-21 14:19       ` Ville Syrjälä
2015-10-14 16:29 ` [PATCH 22/22] drm/i915: Don't pass pitch to intel_compute_page_offset() ville.syrjala
2015-10-21 12:06   ` Daniel Vetter
2015-10-14 16:59 ` [PATCH 00/22] drm/i915: Handle fb->offsets[] and rewrite fb rotation handling to be more generic Daniel Vetter
2015-10-21 12:09   ` Daniel Vetter
2015-10-21 15:15     ` Daniel Vetter

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20151021112817.GC13786@phenom.ffwll.local \
    --to=daniel@ffwll.ch \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=ville.syrjala@linux.intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.