public inbox for intel-gfx@lists.freedesktop.org
 help / color / mirror / Atom feed
* [PATCH 00/25] Fix FBC for real
@ 2014-06-18 17:58 ville.syrjala
  2014-06-18 17:58 ` [PATCH 01/25] drm/i915: Add ring_notify mechanism ville.syrjala
                   ` (25 more replies)
  0 siblings, 26 replies; 31+ messages in thread
From: ville.syrjala @ 2014-06-18 17:58 UTC (permalink / raw)
  To: intel-gfx

From: Ville Syrjälä <ville.syrjala@linux.intel.com>

This series rewrites the FBC code to actually work. It utilizes the
hardware tracking/nuking as much as possible, eg. relying on hardware
nuke on flip when possible.

I also introduce the generic ring and vblank notifier gizmos which could
be used for various other things. I already included a patch to convert
the IPS enable to be asynchronous by using the vblank notifier. Other
users for thse could be mmio flips, watermark programming, atomic
gamma/color correction (single buffered registers all) updates from vblank
interrupt, etc.

There's also a rather big behavioural change that FBC now stays enabled
even when multiple pipes are active. FBC just automatially migrates to
the primary plane where it's deemed most beneficial. We do that
determination by looking at the rate at which the plane is pulling data
(pixel rate * cpp). That seems like a reasonable choice all else being
equal. Eventually we might want to adjust the FBC score based on
nuke/invalidate frequency as well.

The locking now has a new fbc.mutex. I had to split the page flip code
apart a bit to accomondate. I'm not entirely sure if it wouldn't be
better to just keep struct_mutex locked all through there, but then
I'd need rework the locking in the fbc code to not take struct_mutex
when called from the page flip code. And then I'd have to start
questioning whether fbc.mutex has any point existing.

I pushed the lot here:
git://gitorious.org/vsyrjala/linux.git fbc_update_thing_14

Ville Syrjälä (25):
  drm/i915: Add ring_notify mechanism
  drm/i915: Add vblank notify mechanism
  drm/i915: Name the IPS bits
  drm/i915: Use vblank notifier for IPS
  drm/i915: Reogranize page flip code for fbc
  drm/i915: Move ilk_pipe_pixel_rate() earlier to avoid forward
    declaration
  drm/i915: Reorganize intel_update_fbc()
  drm/i915: Check panel fitting state before enabling fbc
  drm/i915: Reject fbc on g4x when sprites are enabled
  drm/i915: Check pixel format for fbc
  drm/i915: Remove dblscan flag from fbc1 check
  drm/i915: Don't claim fbc as possible if the obj size exceeds stolen
    size
  drm/i915: Use low level funciton to disable fbc at init/resume
  drm/i915: Move fbc function prototypes got intel_drv.h
  drm/i915: Move fbc state into dev_priv.fbc
  drm/i915: Rewrite fbc
  drm/i915: Reduce dmesg spam from FBC enable
  drm/i915: Add i915_fbc_info debugfs file
  drm/i915: Implement LRI based FBC tracking
  drm/i915: Use LRI based FBC render tracking for ILK
  drm/i915: Reorder i915_gem_execbuffer_move_to_gpu() and
    i915_switch_context()
  drm/i915: Flush caches for scanout during cpu->gtt move
  drm/i915: Nuke FBC from SW_FINISH ioctl
  drm/i915: Pimp fbc render/blitter tracking
  drm/i915: Enable fbc for ilk+ by default

 drivers/gpu/drm/i915/i915_debugfs.c        |   60 +-
 drivers/gpu/drm/i915/i915_drv.c            |    3 +
 drivers/gpu/drm/i915/i915_drv.h            |   44 +-
 drivers/gpu/drm/i915/i915_gem.c            |   23 +-
 drivers/gpu/drm/i915/i915_gem_context.c    |   14 +
 drivers/gpu/drm/i915/i915_gem_execbuffer.c |   40 +-
 drivers/gpu/drm/i915/i915_irq.c            |   12 +
 drivers/gpu/drm/i915/i915_reg.h            |    3 +-
 drivers/gpu/drm/i915/i915_suspend.c        |    5 +-
 drivers/gpu/drm/i915/intel_display.c       |  399 ++++++++--
 drivers/gpu/drm/i915/intel_drv.h           |   30 +-
 drivers/gpu/drm/i915/intel_pm.c            | 1099 +++++++++++++++++++---------
 drivers/gpu/drm/i915/intel_ringbuffer.c    |  154 +++-
 drivers/gpu/drm/i915/intel_ringbuffer.h    |   26 +-
 drivers/gpu/drm/i915/intel_sprite.c        |   15 +-
 15 files changed, 1483 insertions(+), 444 deletions(-)

-- 
1.8.5.5

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 31+ messages in thread

end of thread, other threads:[~2014-06-19  8:29 UTC | newest]

Thread overview: 31+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-06-18 17:58 [PATCH 00/25] Fix FBC for real ville.syrjala
2014-06-18 17:58 ` [PATCH 01/25] drm/i915: Add ring_notify mechanism ville.syrjala
2014-06-18 20:06   ` Daniel Vetter
2014-06-18 17:58 ` [PATCH 02/25] drm/i915: Add vblank notify mechanism ville.syrjala
2014-06-18 19:53   ` Daniel Vetter
2014-06-18 17:58 ` [PATCH 03/25] drm/i915: Name the IPS bits ville.syrjala
2014-06-18 17:58 ` [PATCH 04/25] drm/i915: Use vblank notifier for IPS ville.syrjala
2014-06-18 17:58 ` [PATCH 05/25] drm/i915: Reogranize page flip code for fbc ville.syrjala
2014-06-18 17:58 ` [PATCH 06/25] drm/i915: Move ilk_pipe_pixel_rate() earlier to avoid forward declaration ville.syrjala
2014-06-18 17:58 ` [PATCH 07/25] drm/i915: Reorganize intel_update_fbc() ville.syrjala
2014-06-18 17:58 ` [PATCH 08/25] drm/i915: Check panel fitting state before enabling fbc ville.syrjala
2014-06-18 17:58 ` [PATCH 09/25] drm/i915: Reject fbc on g4x when sprites are enabled ville.syrjala
2014-06-18 17:58 ` [PATCH 10/25] drm/i915: Check pixel format for fbc ville.syrjala
2014-06-18 17:58 ` [PATCH 11/25] drm/i915: Remove dblscan flag from fbc1 check ville.syrjala
2014-06-18 17:58 ` [PATCH 12/25] drm/i915: Don't claim fbc as possible if the obj size exceeds stolen size ville.syrjala
2014-06-18 17:58 ` [PATCH 13/25] drm/i915: Use low level funciton to disable fbc at init/resume ville.syrjala
2014-06-18 17:58 ` [PATCH 14/25] drm/i915: Move fbc function prototypes got intel_drv.h ville.syrjala
2014-06-18 17:58 ` [PATCH 15/25] drm/i915: Move fbc state into dev_priv.fbc ville.syrjala
2014-06-18 17:58 ` [PATCH 16/25] drm/i915: Rewrite fbc ville.syrjala
2014-06-18 17:58 ` [PATCH 17/25] drm/i915: Reduce dmesg spam from FBC enable ville.syrjala
2014-06-18 17:58 ` [PATCH 18/25] drm/i915: Add i915_fbc_info debugfs file ville.syrjala
2014-06-18 17:58 ` [PATCH v6 19/25] drm/i915: Implement LRI based FBC tracking ville.syrjala
2014-06-18 17:58 ` [PATCH v3 20/25] drm/i915: Use LRI based FBC render tracking for ILK ville.syrjala
2014-06-18 17:58 ` [PATCH v2 21/25] drm/i915: Reorder i915_gem_execbuffer_move_to_gpu() and i915_switch_context() ville.syrjala
2014-06-18 17:58 ` [PATCH 22/25] drm/i915: Flush caches for scanout during cpu->gtt move ville.syrjala
2014-06-18 17:58 ` [PATCH v5 23/25] drm/i915: Nuke FBC from SW_FINISH ioctl ville.syrjala
2014-06-18 17:58 ` [PATCH 24/25] drm/i915: Pimp fbc render/blitter tracking ville.syrjala
2014-06-18 17:58 ` [PATCH 25/25] drm/i915: Enable fbc for ilk+ by default ville.syrjala
2014-06-18 20:03 ` [PATCH 00/25] Fix FBC for real Daniel Vetter
2014-06-19  7:23   ` Chris Wilson
2014-06-19  8:29   ` Ville Syrjälä

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox