1. 06 12月, 2010 1 次提交
  2. 05 12月, 2010 5 次提交
  3. 04 12月, 2010 3 次提交
  4. 03 12月, 2010 1 次提交
  5. 02 12月, 2010 1 次提交
    • C
      drm/i915: Pipelined fencing [infrastructure] · d9e86c0e
      Chris Wilson 提交于
      With this change, every batchbuffer can use all available fences (save
      pinned and scanout, of course) without ever stalling the gpu!
      
      In theory. Currently the actual pipelined update of the register is
      disabled due to some stability issues. However, just the deferred update
      is a significant win.
      
      Based on a series of patches by Daniel Vetter.
      
      The premise is that before every access to a buffer through the GTT we
      have to declare whether we need a register or not. If the access is by
      the GPU, a pipelined update to the register is made via the ringbuffer,
      and we track the last seqno of the batches that access it. If by the
      CPU we wait for the last GPU access and update the register (either
      to clear or to set it for the current buffer).
      
      One advantage of being able to pipeline changes is that we can defer the
      actual updating of the fence register until we first need to access the
      object through the GTT, i.e. we can eliminate the stall on set_tiling.
      This is important as the userspace bo cache does not track the tiling
      status of active buffers which generate frequent stalls on gen3 when
      enabling tiling for an already bound buffer.
      Signed-off-by: NChris Wilson <chris@chris-wilson.co.uk>
      Reviewed-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      d9e86c0e
  6. 30 11月, 2010 1 次提交
  7. 24 11月, 2010 2 次提交
  8. 22 11月, 2010 1 次提交
  9. 13 11月, 2010 1 次提交
  10. 12 11月, 2010 1 次提交
  11. 10 11月, 2010 1 次提交
  12. 08 11月, 2010 2 次提交
  13. 05 11月, 2010 2 次提交
    • D
      drm/i915: kill mappable/fenceable disdinction · 75e9e915
      Daniel Vetter 提交于
      a00b10c3 "Only enforce fence limits inside the GTT" also
      added a fenceable/mappable disdinction when binding/pinning buffers.
      This only complicates the code with no pratical gain:
      
      - In execbuffer this matters on for g33/pineview, as this is the only
        chip that needs fences and has an unmappable gtt area. But fences
        are only possible in the mappable part of the gtt, so need_fence
        implies need_mappable. And need_mappable is only set independantly
        with relocations which implies (for sane userspace) that the buffer
        is untiled.
      
      - The overlay code is only really used on i8xx, which doesn't have
        unmappable gtt. And it doesn't support tiled buffers, currently.
      
      - For all other buffers it's a bug to pass in a tiled bo.
      
      In short, this disdinction doesn't have any practical gain.
      
      I've also reverted mapping the overlay and context pages as possibly
      unmappable. It's not worth being overtly clever here, all the big
      gains from unmappable are for execbuf bos.
      
      Also add a comment for a clever optimization that confused me
      while reading the original patch by Chris Wilson.
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      Signed-off-by: NChris Wilson <chris@chris-wilson.co.uk>
      75e9e915
    • D
      drm/i915: revert pageflip/mappable related abi breakage · 818f2a3c
      Daniel Vetter 提交于
      In a00b10c3 "Only enforce fence limits inside the GTT"
      Chris Wilson implemented an optimization to only pin framebuffers
      as mappable for crtc_set_base (but not for pageflips). This breaks
      the abi, eg: A double buffering mesa client might leave the last
      framebuffer in unmappable space on close. A subsequent glReadPix
      by a frontbuffer rendering client then goes boom. My pretty anal
      mappable/unmappable consistency checking detected this, see
      
      https://bugs.freedesktop.org/show_bug.cgi?id=31286
      
      Chris Wilson tried to fix this in 085ce264 by pinning
      tiled framebuffers into mappable space. This
      a) renders the original optimization of not forcing framebuffers
         for pageflipping clients into mappable pointless because all our
         scanout buffers are tiled by default.
      b) doesn't solve the problem for untiled framebuffers.
      
      So kill this. Emperically it's no gain anyway because framebuffers are
      being reused by the ddx and hence there's no chance for them to get
      constanly bounced between mappable and unmappable.
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      Signed-off-by: NChris Wilson <chris@chris-wilson.co.uk>
      818f2a3c
  14. 04 11月, 2010 2 次提交
  15. 03 11月, 2010 1 次提交
  16. 02 11月, 2010 1 次提交
    • J
      drm/i915: Fix the graphics frequency clamping at init and when IPS is active. · 80dbf4b7
      Jesse Barnes 提交于
      Part of the issue here was that Eric slipped in a debug hack for
      testing the i915 IPS code before the intel_ips.c driver had landed.
      This caused the driver to always use the full range of frequencies,
      which is only legal when IPS tells us we have the headroom.  Once that
      hack was removed, there was confusion about the driver's frequency
      clamping variables: max_delay is the driver's current limit on the
      highest frequency the IPS driver wants us to use, while dev_priv->fmax
      is the hardware-reported limit that the IPS driver can increase up to.
      
      Tested with IPS driver loaded or not.  Note that on Ironlake systems
      without the IPS driver loaded this will result in a performance
      reduction, and the inital warmup of frequency limits can impact
      benchmarking on systems with IPS loaded.
      Signed-off-by: NJesse Barnes <jbarnes@virtuousgeek.org>
      Signed-off-by: NEric Anholt <eric@anholt.net>
      [ickle: demoted a debugging printk]
      Cc: stable@kernel.org
      Signed-off-by: NChris Wilson <chris@chris-wilson.co.uk>
      80dbf4b7
  17. 29 10月, 2010 1 次提交
    • C
      drm/i915: Only enforce fence limits inside the GTT. · a00b10c3
      Chris Wilson 提交于
      So long as we adhere to the fence registers rules for alignment and no
      overlaps (including with unfenced accesses to linear memory) and account
      for the tiled access in our size allocation, we do not have to allocate
      the full fenced region for the object. This allows us to fight the bloat
      tiling imposed on pre-i965 chipsets and frees up RAM for real use. [Inside
      the GTT we still suffer the additional alignment constraints, so it doesn't
      magic allow us to render larger scenes without stalls -- we need the
      expanded GTT and fence pipelining to overcome those...]
      Signed-off-by: NChris Wilson <chris@chris-wilson.co.uk>
      a00b10c3
  18. 28 10月, 2010 2 次提交
  19. 22 10月, 2010 2 次提交
  20. 19 10月, 2010 2 次提交
  21. 08 10月, 2010 7 次提交