playcanvas / playcanvas/engine
WebGPU is broken on Pixel 10 (Tensor G5 / PowerVR) — temporary fallback to WebGL2 to be removed when fixed
@mvaligursky is already working on this.
Since Jun 11, 2026.
- Dominant language
- JavaScript
- Stars
- 16.8k
- Forks
- 2k
- Avg merge
- 4h 32m
- Merged PRs (30d)
- 222
Description
Problem
The Pixel 10 family (Tensor G5) switched from Arm Mali to an Imagination PowerVR DXT-48-1536 GPU. Chrome's WebGPU support for this GPU is new and still buggy — Dawn carries device-specific workarounds (broken workgroup-memory zero-init, pipeline caching, shader miscompiles) and was still suppressing CTS failures for this device as of June 2026.
In practice, engine content using compute shaders fails on this device — e.g. the gsplat GPU radix sort, which breaks SuperSplat.
Detection
The adapter is identifiable via the standard GPUAdapterInfo API (adapter.info):
vendor: "img-tec"architecture: "d-series"
(captured via webgpureport.com on a Pixel 10 Pro)
On Chrome for Android this vendor string currently only matches Tensor G5 devices, as older PowerVR parts were never allowlisted for WebGPU.
Temporary workaround
Detect vendor === 'img-tec' in WebgpuGraphicsDevice.createDevice() after requestAdapter() and fail WebGPU device creation, so createGraphicsDevice() falls back to WebGL2 automatically.
To close this issue
- Chrome/Dawn ships working support for the PowerVR DXT path
- Re-test on Pixel 10 with the workaround disabled (engine gsplat examples + SuperSplat)
- Remove the
img-tecblocklist from the engine
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.