[08/22] flip_test: move output panning inside the flip_handler
diff mbox

Message ID 1350398096-3649-9-git-send-email-imre.deak@intel.com
State New, archived
Headers show

Commit Message

Imre Deak Oct. 16, 2012, 2:34 p.m. UTC
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@intel.com>
---
 tests/flip_test.c |   29 ++++++++++++++---------------
 1 file changed, 14 insertions(+), 15 deletions(-)

Comments

Daniel Vetter Oct. 16, 2012, 2:59 p.m. UTC | #1
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@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@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx

Patch
diff mbox

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);
 	}