[Intel-gfx] [PATCH] drm/i915: don't forget to set intel_crtc->dspaddr_offset on SKL+

Ville Syrjälä ville.syrjala at linux.intel.com
Thu Sep 15 12:58:04 UTC 2016


On Fri, Aug 19, 2016 at 07:03:23PM -0300, Paulo Zanoni wrote:
> We never remembered to set it (so it was zero), but this was not a
> problem in the past due to the way handled the hardware registers.
> Unfortunately we changed how we set the hardware and forgot to set
> intel_crtc->dspaddr_offset.
> 
> This started to reflect on a few kms_frontbuffer_tracking subtests
> that relied on page flips with CRTCs that don't point to the x:0,y:0
> coordinates of the frontbuffer. After the page flip the CRTC was
> showing the x:0,y:0 coordinate of the frontbuffer instead of
> x:500,y:500. This problem is present even if we don't enable FBC or
> PSR.
> 
> While trying to bisect it I realized that the first bad commit
> actually just gives me a black screen for the mentioned tests instead
> of showing the wrong x:0,y:0 offsets. A few commits later the black
> screen problem goes away and we get to the point where the code is
> today, but I'll consider the black screen as the first bad commit
> since it's the point where the IGT subtests start to fail.
> 
> Fixes: 6687c9062c46 ("drm/i915: Rewrite fb rotation GTT handling")
> Testcase: kms_frontbuffer_tracking/fbc-1p-primscrn-shrfb-pgflip-blt
> Testcase: kms_frontbuffer_tracking/fbc-1p-primscrn-shrfb-evflip-blt
> Testcase: kms_frontbuffer_tracking/fbc-1p-shrfb-fliptrack
> Cc: Ville Syrjälä <ville.syrjala at linux.intel.com>
> Cc: Sivakumar Thulasimani <sivakumar.thulasimani at intel.com>
> Cc: drm-intel-fixes at lists.freedesktop.org
> 
> Signed-off-by: Paulo Zanoni <paulo.r.zanoni at intel.com>


> ---
>  drivers/gpu/drm/i915/intel_display.c | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
> index f3e9ac5..1232b0e 100644
> --- a/drivers/gpu/drm/i915/intel_display.c
> +++ b/drivers/gpu/drm/i915/intel_display.c
> @@ -3407,6 +3407,8 @@ static void skylake_update_primary_plane(struct drm_plane *plane,
>  	dst_w--;
>  	dst_h--;
>  
> +	intel_crtc->dspaddr_offset = surf_addr;
> +

Reviewed-by: Ville Syrjälä <ville.syrjala at linux.intel.com>

>  	intel_crtc->adjusted_x = src_x;
>  	intel_crtc->adjusted_y = src_y;
>  
> -- 
> 2.7.4

-- 
Ville Syrjälä
Intel OTC


More information about the Intel-gfx mailing list