import type { Nullable, int } from "../../types"; import { _TimeToken } from "../../Instrumentation/timeToken"; import { PerfCounter } from "../../Misc/perfCounter"; import type { Observer } from "../../Misc/observable"; import type { AbstractEngine } from "../abstractEngine"; import "../AbstractEngine/abstractEngine.query"; declare module "../../Engines/engine" { interface Engine { /** * Starts a time query (used to measure time spent by the GPU on a specific frame) * Please note that only one query can be issued at a time * @returns a time token used to track the time span */ startTimeQuery(): Nullable<_TimeToken>; /** * Ends a time query * @param token defines the token used to measure the time span * @returns the time spent (in ns) */ endTimeQuery(token: _TimeToken): int; /** @internal */ _currentNonTimestampToken: Nullable<_TimeToken>; /** @internal */ _captureGPUFrameTime: boolean; /** @internal */ _gpuFrameTimeToken: Nullable<_TimeToken>; /** @internal */ _gpuFrameTime: PerfCounter; /** @internal */ _onBeginFrameObserver: Nullable>; /** @internal */ _onEndFrameObserver: Nullable>; /** @internal */ _createTimeQuery(): Nullable; /** @internal */ _deleteTimeQuery(query: WebGLQuery): void; /** @internal */ _getGlAlgorithmType(algorithmType: number): number; /** @internal */ _getTimeQueryResult(query: WebGLQuery): any; /** @internal */ _getTimeQueryAvailability(query: WebGLQuery): any; } }