[PATCH xf86-video-ati] Don't enable micro-tiling for scanout buffers on pre-R600

Deucher, Alexander Alexander.Deucher at amd.com
Tue Jul 12 12:50:37 UTC 2016


> -----Original Message-----
> From: amd-gfx [mailto:amd-gfx-bounces at lists.freedesktop.org] On Behalf
> Of Michel Dänzer
> Sent: Tuesday, July 12, 2016 2:58 AM
> To: amd-gfx at lists.freedesktop.org
> Subject: [PATCH xf86-video-ati] Don't enable micro-tiling for scanout buffers
> on pre-R600
> 
> From: Michel Dänzer <michel.daenzer at amd.com>
> 
> The display engine didn't support it.
> 
> Fixes display corruption with options "TearFree" and "ShadowPrimary"
> (and rotation or transforms with current xserver) on pre-R600.
> 
> Signed-off-by: Michel Dänzer <michel.daenzer at amd.com>

Reviewed-by: Alex Deucher <alexander.deucher at amd.com>

> ---
>  src/drmmode_display.c | 11 ++++++-----
>  1 file changed, 6 insertions(+), 5 deletions(-)
> 
> diff --git a/src/drmmode_display.c b/src/drmmode_display.c
> index 2555465..b4f4f1a 100644
> --- a/src/drmmode_display.c
> +++ b/src/drmmode_display.c
> @@ -539,10 +539,11 @@ drmmode_crtc_scanout_allocate(xf86CrtcPtr crtc,
>  			      int width, int height)
>  {
>  	ScrnInfoPtr pScrn = crtc->scrn;
> +	RADEONInfoPtr info = RADEONPTR(pScrn);
>  	drmmode_crtc_private_ptr drmmode_crtc = crtc->driver_private;
>  	drmmode_ptr drmmode = drmmode_crtc->drmmode;
>  	struct radeon_surface surface;
> -	uint32_t tiling;
> +	uint32_t tiling = RADEON_CREATE_PIXMAP_TILING_MACRO;
>  	int ret;
>  	int pitch;
> 
> @@ -553,11 +554,11 @@ drmmode_crtc_scanout_allocate(xf86CrtcPtr crtc,
>  		drmmode_crtc_scanout_destroy(drmmode, scanout);
>  	}
> 
> +	if (info->ChipFamily >= CHIP_FAMILY_R600)
> +		tiling |= RADEON_CREATE_PIXMAP_TILING_MICRO;
>  	scanout->bo = radeon_alloc_pixmap_bo(pScrn, width, height, pScrn-
> >depth,
> -
> RADEON_CREATE_PIXMAP_TILING_MACRO |
> -
> RADEON_CREATE_PIXMAP_TILING_MICRO,
> -					     pScrn->bitsPerPixel, &pitch,
> -					     &surface, &tiling);
> +					     tiling, pScrn->bitsPerPixel,
> +					     &pitch, &surface, &tiling);
>  	if (scanout->bo == NULL)
>  		return NULL;
> 
> --
> 2.8.1
> 
> _______________________________________________
> amd-gfx mailing list
> amd-gfx at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/amd-gfx


More information about the amd-gfx mailing list