1. 14 5月, 2011 1 次提交
  2. 07 3月, 2011 1 次提交
  3. 06 3月, 2011 1 次提交
  4. 24 2月, 2011 1 次提交
  5. 22 2月, 2011 1 次提交
    • C
      drm/i915: Protect against drm_gem_object not being the first member · c8725226
      Chris Wilson 提交于
      Dave Airlie spotted that we had a potential bug should we ever rearrange
      the drm_i915_gem_object so not the base drm_gem_object was not its first
      member. He noticed that we often convert the return of
      drm_gem_object_lookup() immediately into drm_i915_gem_object and then
      check the result for nullity. This is only valid when the base object is
      the first member and so the superobject has the same address. Play safe
      instead and use the compiler to convert back to the original return
      address for sanity testing.
      Signed-off-by: NChris Wilson <chris@chris-wilson.co.uk>
      c8725226
  6. 27 1月, 2011 1 次提交
  7. 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
  8. 24 11月, 2010 1 次提交
  9. 15 11月, 2010 1 次提交
  10. 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
  11. 22 10月, 2010 1 次提交
  12. 25 9月, 2010 1 次提交
    • C
      drm/i915: Adjust hangcheck EIO semantics · 30dbf0c0
      Chris Wilson 提交于
      Owain Ainsworth reported an issue between the interaction of the
      hangcheck and userspace immediately (and permanently) falling back to
      s/w rasterisation. In order to break the mutex and begin resetting the
      GPU, we must abort the current operation (usually within the wait) and
      climb sufficiently far back up the call chain to drop the mutex. In his
      implementation, Owain has a loop within the ioctl handler to detect the
      hang and then sleep until the error handler has run. I've chosen to
      return to userspace and report an EAGAIN which should trigger the
      userspace ioctl handler to repeat the call (simply because it felt less
      invasive...). Before hitting a wedged GPU, we then wait upon completion
      of the error handler.
      Reported-by: NOwain G. Ainsworth <zerooa@googlemail.com>
      Signed-off-by: NChris Wilson <chris@chris-wilson.co.uk>
      30dbf0c0
  13. 21 9月, 2010 1 次提交
  14. 15 9月, 2010 1 次提交
  15. 08 9月, 2010 1 次提交
  16. 10 8月, 2010 1 次提交
  17. 02 8月, 2010 1 次提交
  18. 11 5月, 2010 1 次提交
  19. 19 4月, 2010 1 次提交
    • D
      drm/i915: fix tiling limits for i915 class hw v2 · c36a2a6d
      Daniel Vetter 提交于
      Current code is definitely crap: Largest pitch allowed spills into
      the TILING_Y bit of the fence registers ... :(
      
      I've rewritten the limits check under the assumption that 3rd gen hw
      has a 3d pitch limit of 8kb (like 2nd gen). This is supported by an
      otherwise totally misleading XXX comment.
      
      This bug mostly resulted in tiling-corrupted pixmaps because the kernel
      allowed too wide buffers to be tiled. Bug brought to the light by the
      xf86-video-intel 2.11 release because that unconditionally enabled
      tiling for pixmaps, relying on the kernel to check things. Tiling for
      the framebuffer was not affected because the ddx does some additional
      checks there ensure the buffer is within hw-limits.
      
      v2: Instead of computing the value that would be written into the
      hw fence registers and then checking the limits simply check whether
      the stride is above the 8kb limit. To better document the hw, add
      some WARN_ONs in i915_write_fence_reg like I've done for the i830
      case (using the right limits).
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=27449Tested-by: NAlexander Lam <lambchop468@gmail.com>
      Cc: stable@kernel.org
      Signed-off-by: NEric Anholt <eric@anholt.net>
      c36a2a6d
  20. 26 3月, 2010 1 次提交
  21. 19 3月, 2010 1 次提交
  22. 27 2月, 2010 1 次提交
  23. 23 2月, 2010 2 次提交
  24. 17 2月, 2010 1 次提交
  25. 11 2月, 2010 1 次提交
  26. 07 1月, 2010 1 次提交
  27. 08 12月, 2009 1 次提交
  28. 06 11月, 2009 1 次提交
  29. 08 9月, 2009 1 次提交
    • D
      drm/i915: get the bridge device once. · ec2a4c3f
      Dave Airlie 提交于
      The driver gets the bridge device in a number of places, upcoming
      vga arb code paths need the bridge device, however they need it in
      under a lock, and the pci lookup can allocate memory. So clean
      this code up before then and get the bridge once for the driver lifetime.
      Signed-off-by: NDave Airlie <airlied@redhat.com>
      ec2a4c3f
  30. 05 9月, 2009 1 次提交
  31. 11 7月, 2009 1 次提交
  32. 19 6月, 2009 2 次提交
  33. 10 6月, 2009 1 次提交
  34. 05 6月, 2009 1 次提交
  35. 27 5月, 2009 1 次提交
    • E
      drm/i915: Fix tiling pitch handling on 8xx. · e76a16de
      Eric Anholt 提交于
      The pitch field is an exponent on pre-965, so we were rejecting buffers
      on 8xx that we shouldn't have.  915 got lucky in that the largest legal
      value happened to match (8KB / 512 = 0x10), but 8xx has a smaller tile width.
      Additionally, we programmed that bad value into the register on 8xx, so the
      only pitch that would work correctly was 4096 (512-1023 pixels), while others
      would probably give bad rendering or hangs.
      Signed-off-by: NEric Anholt <eric@anholt.net>
      
      fd.o bug #20473.
      e76a16de
  36. 18 4月, 2009 1 次提交
  37. 09 4月, 2009 1 次提交
    • E
      drm/i915: Allow tiling of objects with bit 17 swizzling by the CPU. · 280b713b
      Eric Anholt 提交于
      Save the bit 17 state of the pages when freeing the page list, and
      reswizzle them if necessary when rebinding the pages (in case they were
      swapped out).  Since we have userland with expectations that the swizzle
      enums let it pread and pwrite contents accurately, we can't expose a new
      swizzle enum for bit 17 (which it would have to GTT map to handle), so we
      handle it down in pread and pwrite by swizzling the copy when bit 17 of the
      page address is set.
      Signed-off-by: NEric Anholt <eric@anholt.net>
      280b713b
  38. 02 4月, 2009 1 次提交
    • D
      drm/i915: fix up tiling/fence reg setup on i8xx class hw · 8d7773a3
      Daniel Vetter 提交于
      This fixes all the tiling problems with the 2d ddx. glxgears still doesn't work.
      Changes:
      
      - fix a copy&paste error in i8xx fence reg setup. It resulted in an at most a
        512KB offset of the fence reg window, so was only visible sometimes.
      - add tests for stride and object size constrains (also for i915 and 1965 class
        hw). Userspace seems to have an of-by-one bug there, which changes the fence
        size by at most 512KB due to an overflow.
      - because i8xx hw is quite old (and therefore not as well-tested) I left 2 debug
        WARN_ONs in the i8xx fence reg setup code to hopefully catch any further
        overflows in the bit-fields. Lastly there's one small change to make the
        alignment checks more consistent.
      
      Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=20289Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      Signed-off-by: NEric Anholt <eric@anholt.net>
      8d7773a3