[Piglit] [PATCH 7/9] Validate that OML Sync Control syncs to vblank.

Eric Anholt eric at anholt.net
Thu May 8 10:47:44 PDT 2014


Jamey Sharp <jamey at minilop.net> writes:

> From: TheoH <Theo0x48 at gmail.com>
>
> The existing tests don't demonstrate a variety of implementation bugs
> that we've observed in current drivers, so this is our attempt to
> demonstrate those bugs.

> diff --git a/tests/spec/glx_oml_sync_control/timing.c b/tests/spec/glx_oml_sync_control/timing.c
> new file mode 100644
> index 0000000..decb352
> --- /dev/null
> +++ b/tests/spec/glx_oml_sync_control/timing.c
> @@ -0,0 +1,298 @@

> +	for (i = 0; i < loops; i++) {
> +		int64_t swapped_ust = 0xd0, swapped_msc = 0xd0, swapped_sbc = 0xd0;
> +		int64_t new_ust = 0xd0, new_msc = 0xd0, new_sbc = 0xd0, new_timestamp;
> +		int64_t expected_msc, target_sbc;
> +		int64_t target_msc = 0;
> +
> +		if (target_msc_delta) {
> +			target_msc = last_msc + target_msc_delta;
> +		}
> +
> +		if (use_swapbuffers) {
> +			glClearColor(0.0, 1.0, 0.0, 0.0);
> +			glClear(GL_COLOR_BUFFER_BIT);
> +			glFlush();
> +
> +			target_sbc = glXSwapBuffersMscOML(dpy, win, target_msc, divisor, msc_remainder);
> +			if(target_sbc <= 0) {
> +				fprintf(stderr, "glXSwapBuffersMscOML failed\n");
> +				return PIGLIT_FAIL;
> +			}
> +                        /*ERROR: swapBuffersMsc calculates wrong target SBC (i.e. not current sbc + 1) */
> +			if(target_sbc != last_sbc + 1) {
> +				fprintf(stderr, "glXSwapBuffersMscOML calculated the wrong target sbc: expected %"PRId64" but got %"PRId64"\n", last_sbc + 1, target_sbc);

We're not totally consistent on this, but I prefer
mostly-80-columns-wrapped code where reasonable.

> +		/* ERROR: non-monotonicity in ust/msc */
> +		if (new_ust < last_ust) {
> +			fprintf(stderr, "non-monotonic UST went backward by %"PRId64"\n", last_ust - new_ust);
> +			result = PIGLIT_FAIL;
> +		}

I think you can drop the "/* ERROR" comments.  They're immediately
followed by a more detailed printf of the problem, anyway.

> +		if (new_msc > expected_msc) {
> +			fprintf(stderr, "woke up %"PRId64" MSCs later than expected\n", new_msc - expected_msc);
> +		}

You could use piglit_merge_result(&result, PIGLIT_WARN) here, so you'll
get a WARN output in the summary if this case failed but no others did.
(same feedback in a couple other places)
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 818 bytes
Desc: not available
URL: <http://lists.freedesktop.org/archives/piglit/attachments/20140508/bd55023b/attachment.sig>


More information about the Piglit mailing list