/** * Copyright (c) 2022-2025 mol* contributors, licensed under MIT, See LICENSE file for more info. * * @author Alexander Rose */ import { GLRenderingContext } from './compat.js'; import { WebGLStats } from './context.js'; import { WebGLExtensions } from './extensions.js'; export type TimerResult = { readonly label: string; readonly gpuElapsed: number; readonly gpuAvg: number; readonly cpuElapsed: number; readonly cpuAvg: number; readonly children: TimerResult[]; readonly calls?: Calls; readonly note?: string; }; type WebGLTimerOptions = { captureStats?: boolean; note?: string; }; export type WebGLTimer = { /** Check with GPU for finished timers. */ resolve: () => TimerResult[]; mark: (label: string, options?: WebGLTimerOptions) => void; markEnd: (label: string) => void; stats: () => { gpu: Record; cpu: Record; }; formatedStats: () => Record; clear: () => void; destroy: () => void; }; type Calls = { drawInstanced: number; counts: number; }; export declare function createTimer(gl: GLRenderingContext, extensions: WebGLExtensions, stats: WebGLStats, options?: { avgCount: number; }): WebGLTimer; export declare function printTimerResults(results: TimerResult[]): void; export {};