[PATCH 1/2] fixup! drm: Stop using linedur_ns and pixeldur_ns for vblank timestamps

Ville Syrjälä ville.syrjala at linux.intel.com
Thu Sep 24 14:00:29 PDT 2015


On Thu, Sep 24, 2015 at 12:23:27PM +0200, Thierry Reding wrote:
> From: Thierry Reding <treding at nvidia.com>
> 

Hmm. I guess I wrote the patch before amdgpu got added.

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

> ---
>  drivers/gpu/drm/amd/amdgpu/amdgpu_display.c | 11 ++++++-----
>  drivers/gpu/drm/amd/amdgpu/amdgpu_mode.h    |  3 ++-
>  2 files changed, 8 insertions(+), 6 deletions(-)
> 
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c
> index e3d70772b531..9b34a3410c32 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c
> @@ -745,7 +745,8 @@ bool amdgpu_crtc_scaling_mode_fixup(struct drm_crtc *crtc,
>   *
>   */
>  int amdgpu_get_crtc_scanoutpos(struct drm_device *dev, int crtc, unsigned int flags,
> -			       int *vpos, int *hpos, ktime_t *stime, ktime_t *etime)
> +			       int *vpos, int *hpos, ktime_t *stime, ktime_t *etime,
> +			       const struct drm_display_mode *mode)
>  {
>  	u32 vbl = 0, position = 0;
>  	int vbl_start, vbl_end, vtotal, ret = 0;
> @@ -781,7 +782,7 @@ int amdgpu_get_crtc_scanoutpos(struct drm_device *dev, int crtc, unsigned int fl
>  	}
>  	else {
>  		/* No: Fake something reasonable which gives at least ok results. */
> -		vbl_start = adev->mode_info.crtcs[crtc]->base.hwmode.crtc_vdisplay;
> +		vbl_start = mode->crtc_vdisplay;
>  		vbl_end = 0;
>  	}
>  
> @@ -797,7 +798,7 @@ int amdgpu_get_crtc_scanoutpos(struct drm_device *dev, int crtc, unsigned int fl
>  
>  	/* Inside "upper part" of vblank area? Apply corrective offset if so: */
>  	if (in_vbl && (*vpos >= vbl_start)) {
> -		vtotal = adev->mode_info.crtcs[crtc]->base.hwmode.crtc_vtotal;
> +		vtotal = mode->crtc_vtotal;
>  		*vpos = *vpos - vtotal;
>  	}
>  
> @@ -819,8 +820,8 @@ int amdgpu_get_crtc_scanoutpos(struct drm_device *dev, int crtc, unsigned int fl
>  	 * We only do this if DRM_CALLED_FROM_VBLIRQ.
>  	 */
>  	if ((flags & DRM_CALLED_FROM_VBLIRQ) && !in_vbl) {
> -		vbl_start = adev->mode_info.crtcs[crtc]->base.hwmode.crtc_vdisplay;
> -		vtotal = adev->mode_info.crtcs[crtc]->base.hwmode.crtc_vtotal;
> +		vbl_start = mode->crtc_vdisplay;
> +		vtotal = mode->crtc_vtotal;
>  
>  		if (vbl_start - *vpos < vtotal / 100) {
>  			*vpos -= vtotal;
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_mode.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_mode.h
> index 64efe5b52e65..2b03425f9740 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_mode.h
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_mode.h
> @@ -543,7 +543,8 @@ void amdgpu_encoder_set_active_device(struct drm_encoder *encoder);
>  int amdgpu_get_crtc_scanoutpos(struct drm_device *dev, int crtc,
>  				      unsigned int flags,
>  				      int *vpos, int *hpos, ktime_t *stime,
> -				      ktime_t *etime);
> +				      ktime_t *etime,
> +				      const struct drm_display_mode *mode);
>  
>  int amdgpu_framebuffer_init(struct drm_device *dev,
>  			     struct amdgpu_framebuffer *rfb,
> -- 
> 2.5.0
> 
> _______________________________________________
> dri-devel mailing list
> dri-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/dri-devel

-- 
Ville Syrjälä
Intel OTC


More information about the dri-devel mailing list