Constrained GPU Mode
The renderer detects device capabilities at initialization and chooses high or constrained. Constrained mode caps canvas dimensions and avoids decoding a full raster background on the WebGL path when detail tiles are unavailable. No host code change is required to use automatic detection.
Automatic detection
A device is classified as constrained when any of these checks applies:
- Device pixel ratio is at least 3, or physical screen area exceeds 8 million pixels.
- Touch input is available and the primary pointer is coarse.
- The GPU texture-upload benchmark takes more than 30 ms.
The benchmark uploads a 512 × 512 RGBA texture ten times and measures completion. Advertised maximum texture size alone does not determine the tier. These checks describe a rendering policy, rather than a guarantee for a particular phone model.
Background behavior
This table covers converted raster backgrounds in WebGL. SVG rendering and Canvas2D fallback retain their existing image-loading behavior.
| Aspect | High tier | Constrained tier |
|---|---|---|
| Maximum canvas dimension | No tier-specific cap | 2048 px |
| Overview | Preview image | Preview image |
| Zoom detail with tiles | Bounded detail from tiles | Bounded detail from tiles |
| Zoom detail without tiles | Full-image fallback | Preview only |
With detail tiles, the renderer combines only the tiles needed for the visible region into a bounded detail crop. It disposes of the detail texture when zooming out and discards obsolete results during rapid movement.
From Renderer 1.74, a constrained device without detail tiles keeps the preview at every zoom level. Background details can therefore appear less sharp. The full image is not decoded to manufacture a crop on this path. High-tier rendering retains that fallback.
Configuration
Omit gpuTier for automatic detection:
const renderer = new SeatmapBookingRenderer(container, {
publicKey: 'your-public-key',
});
Set gpuTier when your target device fleet needs a fixed policy:
const renderer = new SeatmapBookingRenderer(container, {
publicKey: 'your-public-key',
gpuTier: 'constrained',
});
The accepted values are high and constrained. An explicit setting takes precedence over the gpuTier URL parameter, which takes precedence over automatic detection. For a test override, append ?gpuTier=constrained to the page hosting the renderer.
Verification
Enable debug: true to inspect tier selection and background loading in the browser console. Check both tiled and preview-only charts on the physical devices your application supports. Desktop emulation cannot establish a phone’s memory behavior; forcing a tier is useful for exercising the rendering path.