[PATCH] sync amdgpu scanout update event before mode setting

Michel Dänzer michel at daenzer.net
Wed Apr 18 08:55:29 UTC 2018


On 2018-04-17 01:11 PM, Jim Qu wrote:
> There is a case that when set screen from reverse to normal, the old
> scanout damage is freed in modesetting before sanout update handler,
> so it causes segment fault issue.

Good catch, thanks.


> diff --git a/src/drmmode_display.c b/src/drmmode_display.c
> index 85970d1..ea38e29 100644
> --- a/src/drmmode_display.c
> +++ b/src/drmmode_display.c
> @@ -902,6 +902,9 @@ drmmode_set_mode_major(xf86CrtcPtr crtc, DisplayModePtr mode,
>  		drmmode_crtc_wait_pending_event(drmmode_crtc, pAMDGPUEnt->fd,
>  						drmmode_crtc->flip_pending);
>  
> +		drmmode_crtc_wait_pending_event(drmmode_crtc, pAMDGPUEnt->fd,
> +						drmmode_crtc->scanout_update_pending);
> +
>  		if (!drmmode_set_mode(crtc, fb, mode, x, y))
>  			goto done;
>  
> 

The two drmmode_crtc_wait_pending_event invocations can be combined like
this:

		drmmode_crtc_wait_pending_event(drmmode_crtc, pAMDGPUEnt->fd,
						drmmode_crtc->flip_pending ||
						drmmode_crtc->scanout_update_pending);

Okay if I make that modification before pushing?


-- 
Earthling Michel Dänzer               |               http://www.amd.com
Libre software enthusiast             |             Mesa and X developer


More information about the amd-gfx mailing list