How to calculate CAMetalDisplayLink Update timestamp

Hello,

I am using CAMetalDisplayLink to render my metal layer and i am trying to calculate timestamp for next render to compare with current timestamp.

I did notice that timestamp from display link Update is not like Date timestamp. Looks like it depends on some kind of phone boot or another kernel process start. I did try

func bootTime() -> TimeInterval? {
        var tv = timeval()
        var tvSize = MemoryLayout<timeval>.size
        let err = sysctlbyname("kern.boottime", &tv, &tvSize, nil, 0);
        guard err == 0, tvSize == MemoryLayout<timeval>.size else {
            return nil
        }
        return Double(tv.tv_sec) + Double(tv.tv_usec) / 1_000_000.0
    }

And i got

calc
1715680889.6883893
real
1715680878.01257

It's close but still 10 seconds different so probably it's not kern.boottime but something similar.

Anybody knows what should i use to get correct timestamp?

Your output shows real values. Where do you get those from? From the properties on CAMetalDisplayLink.Update?

Share and Enjoy

Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"

How to calculate CAMetalDisplayLink Update timestamp
 
 
Q