[Intel-gfx] [PATCH 07/15] drm/i915/tgl: Make sure FBs have a correct CCS plane stride

Kahola, Mika mika.kahola at intel.com
Thu Dec 19 12:47:59 UTC 2019


On Wed, 2019-12-18 at 18:10 +0200, Imre Deak wrote:
> The CCS plane stride must be fixed on TGL, as it's not configurable
> for
> the display. Instead the HW has a hardwired logic to determine it
> from
> the main plane stride. Make sure userspace passes in the correct
> stride.
> 
> Cc: Dhinakaran Pandiyan <dhinakaran.pandiyan at intel.com>
> Cc: Ville Syrjälä <ville.syrjala at linux.intel.com>
> Signed-off-by: Imre Deak <imre.deak at intel.com>

Reviewed-by: Mika Kahola <mika.kahola at intel.com>

> ---
>  drivers/gpu/drm/i915/display/intel_display.c | 15 +++++++++++++++
>  1 file changed, 15 insertions(+)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_display.c
> b/drivers/gpu/drm/i915/display/intel_display.c
> index 641ea24539eb..7c52591172e1 100644
> --- a/drivers/gpu/drm/i915/display/intel_display.c
> +++ b/drivers/gpu/drm/i915/display/intel_display.c
> @@ -2620,6 +2620,11 @@ bool is_ccs_modifier(u64 modifier)
>  	       modifier == I915_FORMAT_MOD_Yf_TILED_CCS;
>  }
>  
> +static int gen12_ccs_aux_stride(struct drm_framebuffer *fb, int
> ccs_plane)
> +{
> +	return DIV_ROUND_UP(fb->pitches[ccs_to_main_plane(fb,
> ccs_plane)], 512) * 64;
> +}
> +
>  u32 intel_plane_fb_max_stride(struct drm_i915_private *dev_priv,
>  			      u32 pixel_format, u64 modifier)
>  {
> @@ -16530,6 +16535,16 @@ static int intel_framebuffer_init(struct
> intel_framebuffer *intel_fb,
>  			goto err;
>  		}
>  
> +		if (is_gen12_ccs_plane(fb, i)) {
> +			int ccs_aux_stride = gen12_ccs_aux_stride(fb,
> i);
> +
> +			if (fb->pitches[i] != ccs_aux_stride) {
> +				DRM_DEBUG_KMS("ccs aux plane %d pitch
> (%d) must be %d\n",
> +					      i, fb->pitches[i],
> ccs_aux_stride);
> +				goto err;
> +			}
> +		}
> +
>  		fb->obj[i] = &obj->base;
>  	}
>  


More information about the Intel-gfx mailing list