mach: Timer: wasm implementation using performance.now()
This commit is contained in:
parent
9b7b8be285
commit
e5050e856e
2 changed files with 23 additions and 10 deletions
|
|
@ -7,26 +7,35 @@ backing_timer: BackingTimerType = undefined,
|
||||||
|
|
||||||
// TODO: verify declarations and its signatures
|
// TODO: verify declarations and its signatures
|
||||||
const BackingTimerType = if (builtin.cpu.arch == .wasm32) struct {
|
const BackingTimerType = if (builtin.cpu.arch == .wasm32) struct {
|
||||||
pad0: u8 = 0,
|
initial: f64 = undefined,
|
||||||
|
|
||||||
|
const js = struct {
|
||||||
|
extern fn machPerfNow() f64;
|
||||||
|
};
|
||||||
|
|
||||||
const WasmTimer = @This();
|
const WasmTimer = @This();
|
||||||
|
|
||||||
fn start() !WasmTimer {
|
fn start() !WasmTimer {
|
||||||
return WasmTimer{};
|
return WasmTimer{ .initial = js.machPerfNow() };
|
||||||
}
|
}
|
||||||
|
|
||||||
fn read(_: *WasmTimer) u64 {
|
fn read(timer: *WasmTimer) u64 {
|
||||||
return 0;
|
return timeToNs(js.machPerfNow() - timer.initial);
|
||||||
}
|
}
|
||||||
|
|
||||||
fn reset(_: *WasmTimer) void {}
|
fn reset(timer: *WasmTimer) void {
|
||||||
|
timer.initial = js.machPerfNow();
|
||||||
fn lap(_: *WasmTimer) u64 {
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn timeToNs(_: f64) u64 {
|
fn lap(timer: *WasmTimer) u64 {
|
||||||
return 0;
|
const now = js.machPerfNow();
|
||||||
|
const initial = timer.initial;
|
||||||
|
timer.initial = now;
|
||||||
|
return timeToNs(now - initial);
|
||||||
|
}
|
||||||
|
|
||||||
|
fn timeToNs(t: f64) u64 {
|
||||||
|
return @floatToInt(u64, t) * 1000000;
|
||||||
}
|
}
|
||||||
} else std.time.Timer;
|
} else std.time.Timer;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -85,6 +85,10 @@ const mach = {
|
||||||
const cv = mach.canvases[canvas];
|
const cv = mach.canvases[canvas];
|
||||||
return cv.canvas.height;
|
return cv.canvas.height;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
machPerfNow() {
|
||||||
|
return performance.now();
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
export { mach };
|
export { mach };
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue