1. 16 6月, 2015 3 次提交
    • V
      drm/i915: Drop the 64k linear scanout alignment on gen2/3 · 44c5905e
      Ville Syrjälä 提交于
      The docs don't support the 64k linear scanout alignment we impose
      on gen2/3. And it really makes no sense since we have no DSPSURF
      register, so the only thing that the hardware will see is the linear
      offset which will be just pixel aligned anyway.
      
      There is one case where 64k comes into the picture, and that's FBC.
      The start of the line length buffer corresponds to a 64k aligned
      address of the uncompressed framebuffer. So if the uncompressed fb is
      not 64k aligned, the first actually used entry in the line length
      buffer will not be byte 0. There are 32 extra entries in the line
      length buffer to account for this extra alignment so we shouldn't
      have to worry about it when mapping the uncompressed fb to the GTT.
      Signed-off-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      Reviewed-by: NChris Wilson <chris@chris-wilson.co.uk>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      44c5905e
    • V
      drm/i915: Align DSPSURF to 128k on VLV/CHV · 985b8bb4
      Ville Syrjälä 提交于
      VLV/CHV have problems with 4k aligned linear scanout buffers. The VLV
      docs got updated at some point to say that we need to align them to
      128k, just like we do on gen4.
      
      So far I've seen the problem manifest when the stride is an odd multiple
      of 512 bytes, and the surface address meets the following pattern
      '(addr & 0xf000) == 0x1000' (also == 0x2000 is problematic on VLV). The
      result is a starcase effect (so some pages get dropped maybe?), with a
      few pages here and there clearly getting scannout out at the wrong position.
      
      I've not actually been able to reproduce this problem on gen4, so it's
      not clear of the issue is any way related to the 128k restrictions
      supposedly inherited from gen4. But let's hope the 128k alignment is
      sufficient to hide it all.
      Signed-off-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      Reviewed-by: NClint Taylor <Clinton.A.Taylor@intel.com>
      Reviewed-by: NArun R Murthy <arun.r.murthy@intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      985b8bb4
    • V
      drm/i915: Actually respect DSPSURF alignment restrictions · 4e9a86b6
      Ville Syrjälä 提交于
      Currently intel_gen4_compute_page_offset() simply picks the closest
      page boundary below the linear offset. That however may not be suitably
      aligned to satisfy any hardware specific restrictions. So let's make
      sure the page boundary we choose is properly aligned.
      
      Also to play it a bit safer lets split the remaining linear offset into
      x and y values instead of just x. This should make no difference for
      most platforms since we convert the x and y offsets back into a linear
      offset before feeding them to the hardware. HSW+ are different however
      and use x and y offsets even with linear buffers, so they might have
      trouble if either the x or y get too big.
      Signed-off-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      4e9a86b6
  2. 15 6月, 2015 24 次提交
  3. 12 6月, 2015 13 次提交