1. 14 8月, 2015 3 次提交
  2. 05 8月, 2015 1 次提交
    • P
      drm/i915: fix FBC frontbuffer tracking flushing code · 6f4551fe
      Paulo Zanoni 提交于
      Due to the way busy_bits was handled, we were not doing any flushes if
      we didn't previously get an invalidate. Since it's possible to get
      flushes without an invalidate first, remove the busy_bits early
      return.
      
      So now that we don't have the busy_bits guard anymore we'll need the
      origin check for the GTT tracking (we were not doing anything on GTT
      flushes due to the GTT check at invalidate()).
      
      As a last detail, since we can get multiple consecutive flushes,
      disable FBC before updating it, otherwise intel_fbc_update() will just
      keep FBC enabled instead of restarting it.
      
      Notice that this does not fix any of the current IGT tests due to the
      fact that we still have a few intel_fbc() calls at points where we
      also have the frontbuffer tracking calls: we didn't fully convert to
      frontbuffer tracking yet. Once we remove those calls and start relying
      only on the frontbuffer tracking infrastructure we'll need this patch.
      Signed-off-by: NPaulo Zanoni <paulo.r.zanoni@intel.com>
      Reviewed-by: NRodrigo Vivi <rodrigo.vivi@intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      6f4551fe
  3. 27 7月, 2015 1 次提交
  4. 21 7月, 2015 1 次提交
  5. 15 7月, 2015 4 次提交
  6. 14 7月, 2015 4 次提交
  7. 10 7月, 2015 1 次提交
  8. 09 7月, 2015 1 次提交
    • R
      drm/i915: PSR: Flush means invalidate + flush · 169de131
      Rodrigo Vivi 提交于
      Since flush actually means invalidate + flush we need to force psr
      exit on PSR flush.
      
      On Core platforms there is no way to disable hw tracking and
      do the pure sw tracking so we simulate it by fully disable psr and
      reschedule a enable back.
      So a good idea is to minimize sequential disable/enable in cases we
      know that HW tracking like when flush has been originated by a flip.
      Also flip had just invalidated it already.
      
      It also uses origin to minimize the a bit the amount of
      disable/enabled, mainly when flip already had invalidated.
      
      With this patch in place it is possible to do a flush on dirty areas
      properly in a following patch.
      
      v2: Remove duplicated exit on HSW+Sprites as pointed out by Paulo.
      
      Cc: Paulo Zanoni <paulo.r.zanoni@intel.com>
      Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
      Signed-off-by: NRodrigo Vivi <rodrigo.vivi@intel.com>
      Reviewed-by: NPaulo Zanoni <paulo.r.zanoni@intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      169de131
  9. 08 7月, 2015 2 次提交
  10. 06 7月, 2015 2 次提交
    • P
      drm/i915: add the FBC mutex · 25ad93fd
      Paulo Zanoni 提交于
      Make sure we're not going to have weird races in really weird cases
      where a lot of different CRTCs are doing rendering and modesets at the
      same time.
      
      With this change and the stolen_lock from the previous patch, we can
      start removing the struct_mutex locking we have around FBC in the next
      patches.
      
      v2:
       - Rebase (6 months later)
       - Also lock debugfs and stolen.
      v3:
       - Don't lock a single value read (Chris).
       - Replace lockdep assertions with WARNs (Daniel).
       - Improve commit message.
       - Don't forget intel_pre_plane_update() locking.
      v4:
       - Don't remove struct_mutex at intel_pre_plane_update() (Chris).
       - Add comment regarding locking dependencies (Chris).
       - Rebase after the stolen code rework.
       - Rebase again after drm-intel-nightly changes.
      v5:
       - Rebase after the new stolen_lock patch.
      
      Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk> (v4)
      Signed-off-by: NPaulo Zanoni <paulo.r.zanoni@intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      25ad93fd
    • P
      drm/i915: move FBC code out of i915_gem_stolen.c · fc786728
      Paulo Zanoni 提交于
      With the abstractions created by the last patch, we can move this code
      and the only thing inside intel_fbc.c that knows about dev_priv->mm is
      the code that reads stolen_base.
      
      We also had to move a call to i915_gem_stolen_cleanup_compression()
      - now called intel_fbc_cleanup_cfb() - outside i915_gem_stolen.c.
      
      v2:
        - Rebase after the remove_node() changes on the previous patch.
      Requested-by: NChris Wilson <chris@chris-wilson.co.uk>
      Signed-off-by: NPaulo Zanoni <paulo.r.zanoni@intel.com>
      Reviewed-by: NChris Wilson <chris@chris-wilson.co.uk>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      fc786728
  11. 30 6月, 2015 2 次提交
  12. 29 6月, 2015 5 次提交
  13. 26 6月, 2015 1 次提交
    • R
      drm/i915: Fix IPS related flicker · ac88cd73
      Rodrigo Vivi 提交于
      We cannot let IPS enabled with no plane on the pipe:
      
      BSpec: "IPS cannot be enabled until after at least one plane has
      been enabled for at least one vertical blank." and "IPS must be
      disabled while there is still at least one plane enabled on the
      same pipe as IPS." This restriction apply to HSW and BDW.
      
      However a shortcut path on update primary plane function
      to make primary plane invisible by setting DSPCTRL to 0
      was leting IPS enabled while there was no
      other plane enabled on the pipe causing flickerings that we were
      believing that it was caused by that other restriction where
      ips cannot be used when pixel rate is greater than 95% of cdclok.
      
      v2: Don't mess with Atomic path as pointed out by Ville.
      
      Reference: https://bugs.freedesktop.org/show_bug.cgi?id=85583
      Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
      Cc: Paulo Zanoni <paulo.r.zanoni@intel.com>
      Cc: stable@vger.kernel.org
      Signed-off-by: NRodrigo Vivi <rodrigo.vivi@intel.com>
      Reviewed-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      Signed-off-by: NJani Nikula <jani.nikula@intel.com>
      ac88cd73
  14. 25 6月, 2015 1 次提交
  15. 24 6月, 2015 2 次提交
    • D
      drm/i915/psr: Restrict single-shot updates to the PSR pipe · 20c8838b
      Daniel Vetter 提交于
      The frontbuffer code gives us accurate information about activity,
      let's use it. Again this should avoid unecessary updates when multiple
      screens are on.
      
      Also realign function paramaters, I couldn't resist that bit of OCD.
      
      Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
      Cc: Durgadoss R <durgadoss.r@intel.com>
      Reviewed-by: NPaulo Zanoni <paulo.r.zanoni@intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@intel.com>
      20c8838b
    • D
      drm/i915: Clear fb_tracking.busy_bits also for synchronous flips · fdbff928
      Daniel Vetter 提交于
      The current/old frontbuffer might still have gpu frontbuffer rendering
      pending. But once flipped it won't have the corresponding frontbuffer
      bits any more and hence the request retire function won't ever clear
      the corresponding busy bits. The async flip tracking (with the
      flip_prepare and flip_complete functions) already does this, but
      somehow I've forgotten to do this for synchronous flips.
      
      Note that we don't track outstanding rendering of the new framebuffer
      with busy_bits since all our plane update code waits for previous
      rendering to complete before displaying a new buffer. Hence a new
      buffer will never be busy.
      
      v2: Drop the spurious inline Ville spotted.
      
      v3: Don't touch flip_bits in the synchronsou frontbuffer_flip
      function, noticed by Paulo.
      
      v4: Remove one more inline that slipped through (Paulo).
      Reported-by: NPaulo Zanoni <przanoni@gmail.com>
      Cc: Paulo Zanoni <przanoni@gmail.com>
      Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
      Testcase: igt/kms_frontbuffer_tracking/fbc-modesetfrombusy
      Tested-by: NPaulo Zanoni <paulo.r.zanoni@intel.com>
      Reviewed-by: NPaulo Zanoni <paulo.r.zanoni@intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@intel.com>
      fdbff928
  16. 23 6月, 2015 1 次提交
    • J
      drm/i915: Update i915_gem_object_sync() to take a request structure · 91af127f
      John Harrison 提交于
      The plan is to pass requests around as the basic submission tracking structure
      rather than rings and contexts. This patch updates the i915_gem_object_sync()
      code path.
      
      v2: Much more complex patch to share a single request between the sync and the
      page flip. The _sync() function now supports lazy allocation of the request
      structure. That is, if one is passed in then that will be used. If one is not,
      then a request will be allocated and passed back out. Note that the _sync() code
      does not necessarily require a request. Thus one will only be created until
      certain situations. The reason the lazy allocation must be done within the
      _sync() code itself is because the decision to need one or not is not really
      something that code above can second guess (except in the case where one is
      definitely not required because no ring is passed in).
      
      The call chains above _sync() now support passing a request through which most
      callers passing in NULL and assuming that no request will be required (because
      they also pass in NULL for the ring and therefore can't be generating any ring
      code).
      
      The exeception is intel_crtc_page_flip() which now supports having a request
      returned from _sync(). If one is, then that request is shared by the page flip
      (if the page flip is of a type to need a request). If _sync() does not generate
      a request but the page flip does need one, then the page flip path will create
      its own request.
      
      v3: Updated comment description to be clearer about 'to_req' parameter (Tomas
      Elf review request). Rebased onto newer tree that significantly changed the
      synchronisation code.
      
      v4: Updated comments from review feedback (Tomas Elf)
      
      For: VIZ-5115
      Signed-off-by: NJohn Harrison <John.C.Harrison@Intel.com>
      Reviewed-by: NTomas Elf <tomas.elf@intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      91af127f
  17. 22 6月, 2015 8 次提交