v148 · WebGPU
Texture Format Support
Compatibility mode restricts which GPU texture formats are available. Compressed formats (BC, ETC2, ASTC) depend on hardware, and some colour formats behave differently under OpenGL ES 3.1. The grid below maps every format to its availability in core vs compat — click a card to see why.
Feature detection: checking…
Core + Compat
Core only
Device dependent
Click a format card to see compatibility details.
Live format probe
Results from device.features.has() on the current device
| Feature name | This device | Required for |
|---|---|---|
| No WebGPU device — showing static data only. | ||
// Request a compatibility adapter
const adapter = await navigator.gpu.requestAdapter({
featureLevel: 'compatibility',
});
// Then check which texture features it exposes
const hasBCCompressed = adapter.features.has('texture-compression-bc');
const hasETC2Compressed = adapter.features.has('texture-compression-etc2');
const hasASTCCompressed = adapter.features.has('texture-compression-astc');
const hasRG11B10Float = adapter.features.has('rg11b10ufloat-renderable');
const hasBGRA8Unorm = adapter.features.has('bgra8unorm-storage');
// Request device with only the features we can actually use
const device = await adapter.requestDevice({
requiredFeatures: [
...(hasBCCompressed ? ['texture-compression-bc'] : []),
...(hasETC2Compressed ? ['texture-compression-etc2'] : []),
...(hasASTCCompressed ? ['texture-compression-astc'] : []),
],
});
see also
- Feature Limits — numeric limits in compat vs core
- Compat Rendering — portable shaders for both modes
- Portable WGSL — WGSL syntax restrictions in compat mode
implementation reference
Need the exact API surface, compatibility boundaries, errors, lifecycle, and source links? Read the matching gendn reference ↗