[Intel-gfx] [PATCH 00/14] drm/i915: Moar plane update optimizations
Ville Syrjälä
ville.syrjala at linux.intel.com
Thu Mar 23 14:06:24 UTC 2017
On Fri, Mar 17, 2017 at 11:17:54PM +0200, ville.syrjala at linux.intel.com wrote:
> From: Ville Syrjälä <ville.syrjala at linux.intel.com>
>
> The plane updates are still taking far too long, at least with
> heavy kernel debug knobs turned on. Using kms_atomic_transitions
> I'm currently seeing numbers as high as 170 usec on my VLV.
>
> To combat lockdep the most beneficial thing is taking the
> uncore.lock around the entire pipe update. Combined with all
> the other optimizations here I was able to push the max
> duration below 60 usec with my debug kernel.
>
> The pre-compute stuff isn't supremely important with lockdep/etc.
> turned on, but once those are turned off the few usec saved by
> the other optimizations start to matter. With all the optimization
> and a less debug heavy kernel I was able to get the max duration
> to around 15 usec. It was around 25 usec with the current code.
>
> Mika was saying that he's still seeing huge numbers (as high
> as 400 usec) with the current drm-tip, and that wasn't even with
> a particularly debug heavy kernel. One theory is that there's
> contention on the uncore.lock. So I'm thinking we may want to
> split the lock into two; one for gt, the other for display. Not
> starving the GPU by hogging the shared lock for display stuff
> might also be a good thing. I've not tried playing with more
> GPU heavy scenarios yet
>
> Anyways, running out of time to play with this more today so
> I figured I'd post what I have now.
>
> Series available here:
> git://github.com/vsyrjala/linux.git plane_update_optimization
>
> Ville Syrjälä (14):
> drm/i915: Extract skl_plane_ctl()
> drm/i915: Use skl_plane_ctl() for the SKL "sprite" planes
> drm/i915: Extract vlv_sprite_ctl()
> drm/i915: Extract ivb_sprite_ctl()
> drm/i915: Extract ilk_sprite_ctl()
> drm/i915: Extract i845_cursor_ctl() and i9xx_cursor_ctl()
I've pushed these to dinq. Thanks for the review.
> drm/i915: Extract i9xx_plane_ctl()
> drm/i915: Pre-compute plane control register value
> drm/i915: Introduce i9xx_check_plane_surface()
> drm/i915: Eliminate ironlake_update_primary_plane()
> drm/i915: Use i9xx_check_plane_surface() for sprite planes as well
I'll repost these as new series.
> drm/i915: Keep vblanks enabled during the entire pipe update
> WIP/drm/i915: Protect the entire pipe update with uncore.lock
> WIP/drm/i915: Nuke posting reads from plane updates
And these I'll probably leave out from the next series, and repost
separately later.
>
> drivers/gpu/drm/i915/i915_irq.c | 66 ++++--
> drivers/gpu/drm/i915/i915_trace.h | 28 +--
> drivers/gpu/drm/i915/intel_display.c | 436 +++++++++++++++++------------------
> drivers/gpu/drm/i915/intel_drv.h | 16 +-
> drivers/gpu/drm/i915/intel_pm.c | 11 +-
> drivers/gpu/drm/i915/intel_sprite.c | 355 ++++++++++++----------------
> 6 files changed, 440 insertions(+), 472 deletions(-)
>
> --
> 2.10.2
--
Ville Syrjälä
Intel OTC
More information about the Intel-gfx
mailing list