Understanding Browser Input Buffering: Why Frame Queueing Causes Perceived Controller Lag

How the Chromium compositor frame swapchain queues frames and how to minimize input lag by aligning polling with requestAnimationFrame.

Even when a browser game displays a steady 60 FPS on your screen, the controls can feel strangely heavy and sluggish compared to a native console or PC game.

This sensation is known as perceived input latency or input buffering. It occurs when the browser’s graphics compositor queues two to three completed frames in advance inside the GPU swapchain to ensure smooth video presentation.

While frame queueing prevents screen tearing and dropped frames, it introduces 33ms to 50ms of display latency between your physical finger press and the visual result on screen.

Here is how to optimize frame pacing and minimize input buffering in WebGL.


1. The Triple Buffering Delay

  1. Frame 1 (Being Rendered on CPU): The JavaScript game engine processes inputs and dispatches draw calls.
  2. Frame 2 (Being Rasterized on GPU): The graphics driver draws polygons into an offscreen framebuffer.
  3. Frame 3 (Waiting in Swapchain Queue): The completed frame waits for the monitor’s next vertical refresh pulse.

Under standard triple buffering, an input received in Frame 1 will not appear on your monitor until three full frame intervals later (50 milliseconds)!


2. How to Reduce Input Queueing in Chrome

  1. Enable Low-Latency Hardware Composition: In Windows 11, ensure Hardware-accelerated GPU scheduling (HAGS) is turned on in Windows Graphics Settings. HAGS allows the GPU scheduler to manage its own queue, reducing swapchain depth.
  2. Launch with Low Latency Flags: You can launch Chrome with: --enable-features=DirectCompositionLowLatencyPresentation This flag forces Chromium to present frames directly to the display hardware with minimal swapchain buffering, reducing input delay by up to 25ms.

Share this guide
DV

About the Author: Devin Vance

Devin Vance writes technical guides and performance benchmarks at TabGamer, covering browser graphics, WebGL flags, low-spec laptop optimization, and retro WebAssembly emulation.