diff mbox

drm/i915: don't forget to set intel_crtc->dspaddr_offset on SKL+

Message ID 1471644203-23463-1-git-send-email-paulo.r.zanoni@intel.com (mailing list archive)
State New, archived
Headers show

Commit Message

Zanoni, Paulo R Aug. 19, 2016, 10:03 p.m. UTC
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@linux.intel.com>
Cc: Sivakumar Thulasimani <sivakumar.thulasimani@intel.com>
Cc: drm-intel-fixes@lists.freedesktop.org

Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
---
 drivers/gpu/drm/i915/intel_display.c | 2 ++
 1 file changed, 2 insertions(+)

Comments

Ville Syrjälä Sept. 15, 2016, 12:58 p.m. UTC | #1
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@linux.intel.com>
> Cc: Sivakumar Thulasimani <sivakumar.thulasimani@intel.com>
> Cc: drm-intel-fixes@lists.freedesktop.org
> 
> Signed-off-by: Paulo Zanoni <paulo.r.zanoni@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@linux.intel.com>

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

Patch

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;
+
 	intel_crtc->adjusted_x = src_x;
 	intel_crtc->adjusted_y = src_y;