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
next prev 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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox