drm/i915: Align DSPSURF to 128k on VLV/CHV
authorVille Syrjälä <ville.syrjala@linux.intel.com>
Thu, 11 Jun 2015 13:31:15 +0000 (16:31 +0300)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Mon, 15 Jun 2015 16:07:27 +0000 (18:07 +0200)
commit985b8bb486e7dd924925898f86fffca546d698db
treebe6716d59a083f5f91b94d23a10ddeed81a0c789
parent4e9a86b6bd335925077dde1006da6838774537d9
drm/i915: Align DSPSURF to 128k on VLV/CHV

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: Ville Syrjälä <ville.syrjala@linux.intel.com>
Reviewed-by: Clint Taylor <Clinton.A.Taylor@intel.com>
Reviewed-by: Arun R Murthy <arun.r.murthy@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
drivers/gpu/drm/i915/intel_display.c