[Intel-gfx] [PATCH 2/3] drm/i915: Align DSPSURF to 128k on VLV/CHV
Clint Taylor
clinton.a.taylor at intel.com
Thu Jun 11 17:46:44 PDT 2015
On 06/11/2015 06:31 AM, ville.syrjala at linux.intel.com wrote:
> From: Ville Syrjälä <ville.syrjala at linux.intel.com>
>
> 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 at linux.intel.com>
> ---
> drivers/gpu/drm/i915/intel_display.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
> index 0ac213a..2221323 100644
> --- a/drivers/gpu/drm/i915/intel_display.c
> +++ b/drivers/gpu/drm/i915/intel_display.c
> @@ -2329,7 +2329,8 @@ static unsigned int intel_linear_alignment(struct drm_i915_private *dev_priv)
> {
> if (INTEL_INFO(dev_priv)->gen >= 9)
> return 256 * 1024;
> - else if (IS_BROADWATER(dev_priv) || IS_CRESTLINE(dev_priv))
> + else if (IS_BROADWATER(dev_priv) || IS_CRESTLINE(dev_priv) ||
> + IS_VALLEYVIEW(dev_priv))
> return 128 * 1024;
> else if (INTEL_INFO(dev_priv)->gen >= 4)
> return 4 * 1024;
>
Fairly straight forward now that we know VLV and CHV require the 128k
alignment.
Reviewed-by: Clint Taylor <Clinton.A.Taylor at intel.com>
More information about the Intel-gfx
mailing list