// Copyright 2018-2021 The Khronos Group Inc.
//
// SPDX-License-Identifier: CC-BY-4.0

include::{generated}/meta/{refprefix}VK_EXT_calibrated_timestamps.txt[]

=== Other Extension Metadata

*Last Modified Date*::
    2018-10-04
*IP Status*::
    No known IP claims.
*Contributors*::
  - Matthaeus G. Chajdas, AMD
  - Alan Harrison, AMD
  - Derrick Owens, AMD
  - Daniel Rakos, AMD
  - Jason Ekstrand, Intel
  - Keith Packard, Valve

=== Description

This extension provides an interface to query calibrated timestamps obtained
quasi simultaneously from two time domains.

include::{generated}/interfaces/VK_EXT_calibrated_timestamps.txt[]

=== Issues

1) Is the device timestamp value returned in the same time domain as the
timestamp values written by flink:vkCmdWriteTimestamp?

*RESOLVED*: Yes.

2) What time domain is the host timestamp returned in?

*RESOLVED*: A query is provided to determine the calibrateable time domains.
The expected host time domain used on Windows is that of
QueryPerformanceCounter, and on Linux that of CLOCK_MONOTONIC.

3) Should we support other time domain combinations than just one host and
the device time domain?

*RESOLVED*: Supporting that would need the application to query the set of
supported time domains, while supporting only one host and the device time
domain would only need a query for the host time domain type.
The proposed API chooses the general approach for the sake of extensibility.

4) Should we use CLOCK_MONOTONIC_RAW instead of CLOCK_MONOTONIC?

*RESOLVED*: CLOCK_MONOTONIC is usable in a wider set of situations, however,
it is subject to NTP adjustments so some use cases may prefer
CLOCK_MONOTONIC_RAW.
Thus this extension allows both to be exposed.

5) How can the application extrapolate future device timestamp values from
the calibrated timestamp value?

*RESOLVED*: slink:VkPhysicalDeviceLimits::pname:timestampPeriod makes it
possible to calculate future device timestamps as follows:

6) In what queue are timestamp values in time domain
ename:VK_TIME_DOMAIN_DEVICE_EXT captured by
flink:vkGetCalibratedTimestampsEXT?

*RESOLVED*: An implementation supporting this extension will have all its
VkQueue share the same time domain.

[source,c]
---------------------------------------------------
futureTimestamp = calibratedTimestamp + deltaNanoseconds / timestampPeriod
---------------------------------------------------

6) Can the host and device timestamp values drift apart over longer periods
of time?

*RESOLVED*: Yes, especially as some time domains by definition allow for
that to happen (e.g. CLOCK_MONOTONIC is subject to NTP adjustments).
Thus it is recommended that applications re-calibrate from time to time.

7) Should we add a query for reporting the maximum deviation of the
timestamp values returned by calibrated timestamp queries?

*RESOLVED*: A global query seems inappropriate and difficult to enforce.
However, it is possible to return the maximum deviation any single
calibrated timestamp query can have by sampling one of the time domains
twice as follows:

[source,c]
---------------------------------------------------
timestampX = timestampX_before = SampleTimeDomain(X)
for each time domain Y != X
    timestampY = SampleTimeDomain(Y)
timestampX_after = SampleTimeDomain(X)
maxDeviation = timestampX_after - timestampX_before
---------------------------------------------------

8) Can the maximum deviation reported ever be zero?

*RESOLVED*: Unless the tick of each clock corresponding to the set of time
domains coincides and all clocks can literally be sampled simutaneously,
there is not really a possibility for the maximum deviation to be zero, so
by convention the maximum deviation is always at least the maximum of the
length of the ticks of the set of time domains calibrated and thus can never
be zero.

=== Version History

  * Revision 2, 2021-03-16 (Lionel Landwerlin)
    - Specify requirement on device timestamps
  * Revision 1, 2018-10-04 (Daniel Rakos)
    - Internal revisions.
