Graphite's Context now provides an interface to report the GPU time spent processing a recording. The client provides a different finished proc of type skgpu::graphite::GpuFinishedWithStatsProc using skgpu::graphite::InsertRecordingInfo::fFinishedWithStatsProc and sets the flag skgpu::graphite::InsertRecordingInfo::fGpuStatsFlag to skgpu::GpuStatsFlags::kElapsedTime. The new callback takes a new struct, skgpu::GpuStats, which has an elapsedTime field that will indicate the amount of GPU time used by the recording. This is implemented for the Dawn backend only. In WASM on WebGPU the reported time excludes any GPU transfers that occur before the first render/compute pass or after the last pass because of limitations in the WebGPU timestamp query API.

GrDirectContext provides a similar interface to report the GPU time spent in a flush. The client uses a new callback type, GrGpuFinishedWithStatsProc and sets the same flag on GrFlushInfo. This is implemented for GL (including GLES and WebGL).