[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