[Mesa-dev] [PATCH crucible 2/3] Fix timestamp frequency.

Bas Nieuwenhuizen bas at basnieuwenhuizen.nl
Sat Feb 24 01:29:29 UTC 2018


From: Bas Nieuwenhuizen <basni at chromium.org>

Per spec:

"timestampPeriod is the number of nanoseconds required for a timestamp query to be
incremented by 1."

So:

period = nanoseconds/cycle and difference = cycles
difference * period = nanoseconds
difference * period / 1000000 = milliseconds
difference / (1000000 / period) = milliseconds

therefore freq = 1000000 / period, since we compute elapsed ms from this.

Fixes func.query.timestamp on radv.
---

This likely breaks the test for anv, so I would appreciate it if someone would either
look at anv or prove my commit wrong.

 src/tests/func/query/timestamp.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/tests/func/query/timestamp.c b/src/tests/func/query/timestamp.c
index ea7f683..aef007d 100644
--- a/src/tests/func/query/timestamp.c
+++ b/src/tests/func/query/timestamp.c
@@ -66,7 +66,7 @@ test_timestamp(void)
     t_assert(poll(NULL, 0, 100) == 0);
     b = get_timestamp();
 
-    freq = 1 / (t_physical_dev_props->limits.timestampPeriod * 1000);
+    freq = 1000000 / t_physical_dev_props->limits.timestampPeriod;
     elapsed_ms = (b - a) / freq;
     printf("difference: %" PRIu64 " - %" PRIu64 " = %" PRIu64 "\n", b / freq, a / freq, elapsed_ms);
     if (elapsed_ms < 90 || elapsed_ms > 110)
-- 
2.16.1



More information about the mesa-dev mailing list