[Intel-gfx] [PATCH 08/22] flip_test: move output panning inside the flip_handler

Daniel Vetter daniel at ffwll.ch
Tue Oct 16 16:59:54 CEST 2012


On Tue, Oct 16, 2012 at 05:34:42PM +0300, Imre Deak wrote:
> Move the panning to a more logical place where the rest of the test
> steps are performed. This won't change things in practice, since the
> first thing drmHandleEvent does is call the flip_handler.
> 
> Signed-off-by: Imre Deak <imre.deak at intel.com>

Looking at this again I think the test is actually broken. It tries to
check whether fb_set_base correclty waits for any outstanding flips (well,
it can't really check that, but it should exercise the code at least). So
the right place to call this is actually right _after_ issueing the flip,
where the TEST_DPMS and TEST_MODESET cases are.
-Daniel

> ---
>  tests/flip_test.c |   29 ++++++++++++++---------------
>  1 file changed, 14 insertions(+), 15 deletions(-)
> 
> diff --git a/tests/flip_test.c b/tests/flip_test.c
> index 06768a4..0825cda 100644
> --- a/tests/flip_test.c
> +++ b/tests/flip_test.c
> @@ -218,6 +218,20 @@ static void page_flip_handler(int fd, unsigned int frame, unsigned int sec,
>  		}
>  	}
>  
> +	/* pan before the flip completes */
> +	if (o->flags & TEST_PAN) {
> +		int x_ofs = o->count * 10 > o->mode.hdisplay ?
> +			    o->mode.hdisplay : o->count * 10;
> +
> +		if (drmModeSetCrtc(drm_fd, o->crtc, o->fb_ids[o->current_fb_id],
> +				   x_ofs, 0, &o->id, 1, &o->mode)) {
> +			fprintf(stderr, "failed to pan (%dx%d@%dHz): %s\n",
> +				o->fb_width, o->fb_height,
> +				o->mode.vrefresh, strerror(errno));
> +			exit(7);
> +		}
> +	}
> +
>  	if (o->flags & TEST_WITH_DUMMY_LOAD)
>  		emit_dummy_load(o);
>  
> @@ -481,21 +495,6 @@ static void flip_mode(struct test_output *o, int crtc, int duration)
>  			break;
>  		}
>  
> -		/* pan before the flip completes */
> -		if (o->flags & TEST_PAN) {
> -			int x_ofs = o->count * 10 > o->mode.hdisplay ? o->mode.hdisplay :
> -				o->count * 10;
> -
> -			if (drmModeSetCrtc(drm_fd, o->crtc, o->fb_ids[o->current_fb_id],
> -					   x_ofs, 0,
> -					   &o->id, 1, &o->mode)) {
> -				fprintf(stderr, "failed to pan (%dx%d@%dHz): %s\n",
> -					o->fb_width, o->fb_height,
> -					o->mode.vrefresh, strerror(errno));
> -				exit(7);
> -			}
> -		}
> -
>  		ret = drmHandleEvent(drm_fd, &evctx);
>  		assert(ret == 0);
>  	}
> -- 
> 1.7.9.5
> 
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx

-- 
Daniel Vetter
Software Engineer, Intel Corporation
+41 (0) 79 365 57 48 - http://blog.ffwll.ch



More information about the Intel-gfx mailing list